{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams[\"font.sans-serif\"] = \"SimHei\" #解决中文乱码问题\n",
    "import seaborn as sns\n",
    "import random\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn import model_selection\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "##测试测试"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "缺失值查看预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(261477, 3) (260864, 3)\n",
      "(424170, 3) (54925330, 7)\n"
     ]
    }
   ],
   "source": [
    "df_train = pd.read_csv('./data_format1/train_format1.csv')\n",
    "df_test = pd.read_csv('./data_format1/test_format1.csv')\n",
    "user_info = pd.read_csv('./data_format1/user_info_format1.csv')\n",
    "user_log = pd.read_csv('./data_format1/user_log_format1.csv')\n",
    "\n",
    "print(df_test.shape,df_train.shape)\n",
    "print(user_info.shape,user_log.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 424170 entries, 0 to 424169\n",
      "Data columns (total 3 columns):\n",
      " #   Column     Non-Null Count   Dtype  \n",
      "---  ------     --------------   -----  \n",
      " 0   user_id    424170 non-null  int64  \n",
      " 1   age_range  421953 non-null  float64\n",
      " 2   gender     417734 non-null  float64\n",
      "dtypes: float64(2), int64(1)\n",
      "memory usage: 9.7 MB\n"
     ]
    }
   ],
   "source": [
    "user_info.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>376517</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>234512</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>344532</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>186135</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30230</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>272389</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>281071</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>139859</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>198411</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>67037</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  age_range  gender\n",
       "0   376517        6.0     1.0\n",
       "1   234512        5.0     0.0\n",
       "2   344532        5.0     0.0\n",
       "3   186135        5.0     0.0\n",
       "4    30230        5.0     0.0\n",
       "5   272389        6.0     1.0\n",
       "6   281071        4.0     0.0\n",
       "7   139859        7.0     0.0\n",
       "8   198411        5.0     1.0\n",
       "9    67037        4.0     1.0"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_info.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 424170 entries, 0 to 424169\n",
      "Data columns (total 3 columns):\n",
      " #   Column     Non-Null Count   Dtype  \n",
      "---  ------     --------------   -----  \n",
      " 0   user_id    424170 non-null  int64  \n",
      " 1   age_range  329039 non-null  float64\n",
      " 2   gender     407308 non-null  float64\n",
      "dtypes: float64(2), int64(1)\n",
      "memory usage: 9.7 MB\n"
     ]
    }
   ],
   "source": [
    "user_info['age_range'].replace(0.0,np.nan,inplace=True)\n",
    "user_info['gender'].replace(2.0,np.nan,inplace=True)\n",
    "user_info.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "user_info['age_range'].replace(np.nan,-1,inplace=True)\n",
    "user_info['gender'].replace(np.nan,-1,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户年龄分布')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAINCAYAAAAJGy/3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2FElEQVR4nO3de5xVdaH///c4M4AIyIwhKIIglkVFhqJEHjx9o7zBiUzT9JiXTD2Zl4fKUcu+aiXi0Tx+/erRNBUpL6VHLVNSjxjHTFA6ypHweEsULygqzqDAcJn1+8Mf82XkshBmGGCez8djPx7s9dl7zWd9WsG83HuvXVEURREAAABWa4u2ngAAAMDGTjgBAACUEE4AAAAlhBMAAEAJ4QQAAFBCOAEAAJQQTgAAACWEEwAAQAnhBAAAUEI4AbDRWbJkSZ577rmP/Lxbbrklr732WovP5+23387ixYvX+vENDQ3N/nz//fev0889+eSTc+utt67TcwFoWcIJgPXyhz/8IRUVFWt9+/Wvf126zx/84AcZMWJElixZstbzmDJlSg477LCcdtppH2n+r776au64444kyYEHHpj/83/+zyrnM3jw4BRFUbq/2bNnZ8cdd8ykSZOSJE888UT22WefPProox95XldccUVefPHFj/Q8AFqHcAJgvVRXVydJFi5c2HRbHiIrbnvvvfeSJJ06dSrd54knnpjZs2fn9ttvX6s5LFmyJN/73vfSvXv3/Mu//Evee++9lW7z58/PO++8kzfeeKNZkP3P//xP/vf//t9JksbGxnTu3DmLFi1qetWoKIo8+OCDefbZZ/Nf//VfpXMZN25cli5dmt122y1JMnTo0IwcOTKnnnpqli5dusrn1NfXZ8GCBVm2bFnTtquuuirdunXLSSedtNLjGxsbs3jx4qY1BaD1VbX1BADYtFVVffBPyYpBtDymVty2PBqWjy23ePHi/O1vf1tpvz/4wQ9SW1ub//mf/2m2vWvXrundu3ezbWeeeWaeeOKJ1NTUZPDgwUmSZcuW5d13301NTU222GKLFEWRhoaGNDQ0ZMqUKU1hU11dnQ4dOiRJKisrc/rpp+eMM87IKaeckh//+Me55557MmfOnJx11ln5xje+kUcffTTbbbfdKtfi+eefz3XXXZeLLrooW2+9ddP2n/3sZ/nc5z6Xn/zkJzn//PNXet6gQYPy0ksvrXKfXbt2XeX2JNlzzz0zZcqU1Y4D0HKEEwDrZYstPtqbFz78+BdeeCEDBw5c6+cffPDB+c1vftN0/5e//GX+9V//NYceemhuueWWpu0zZszIZz/72fzXf/1X+vXrt8p9LV68OIsWLWo2p8svvzxHHXVUiqLI0qVL86Mf/SjHHXdczj333DzyyCPZa6+9ctddd+Wzn/1ss301NjbmyCOPTP/+/fO9732v2dgnPvGJXHjhhTnttNOyww475Lvf/W6z8f/4j/9IRUVFOnbsmKqqqvzzP/9zHnroofzpT3/KrFmz8vTTT2f06NErzX958AHQ+oQTAOuloqIiSfNXlxobG1fatjrLX4F68cUXVxs4y+26667NYuGWW27J0UcfnWHDhuWGG25Y7fMaGxub3t5WWVmZjh07JknGjx+f0047LR06dEivXr2ydOnS/PGPf8zJJ5+c73//+6mqqsrs2bOz++67Z+zYsbntttuyzz77ZPfdd8+ZZ56ZH//4x00/44ILLsjjjz+eP/3pTyu9qpYkp556al544YUcd9xxeeaZZzJ27NimY9l5552bHvfYY4/lpptuyh133JEdd9wxv//973PxxRfnhBNOKF1LAFqPzzgBsF6WXzBh0aJFTbfln3FacdvqPo+z/K1+a6uysrLpz1/84hdz5pln5ne/+1223HLLVFZWpqqqKlVVVdl1112TJAMGDEhlZWWqq6uz1VZb5eKLL256/nHHHZf33nsv77zzTubMmZN77703b7/9durr6zN8+PD89Kc/zZVXXplevXrlwgsvzOLFi/PQQw/lG9/4Rr761a827efGG2/Mueeem1NPPTUf+9jHMnv27Lzyyisr3c4888ycfvrpufTSS/O5z30ujz/+eLNje+ONN3LwwQfnO9/5Tr72ta8l+SAsl4ceAG3HK04ArJflry6tq+UhtGDBgtKLHTQ2Nja9wpUkffv2zQUXXJDkg7cA3nfffRkxYkSS//dWvRdeeCH9+vVLURRZvHjxSm8VvOGGG/Lxj388u+66a/bcc89Mnz4977//frbaaqvceOONOeSQQ5IkgwcPzvTp07PPPvvk5ptvbnr+jBkz8p3vfCcnnHBC6uvrM2DAgDUeww9/+MPce++9Oe+88/KJT3yiafu8efMycuTIvPzyy7n22mtz7bXXNnveisedJNdee22OPfbYNf4sAFqOcAJgvSy/Qt2K0bNo0aKVtq14xbgVLb963ac//em1+nnLX0n6sBVfiVqV5Z8h+rDbb789I0eOzJIlS7Lddttl0KBBOfHEE7PVVltlv/32y5VXXpnKysoceuihefHFF3P11VenX79+2XfffZMkn/nMZzJ16tQMHjw48+fPz4UXXpg///nPGTlyZJ555plsv/32TT+rZ8+eTc9d/vzkg0uPH3DAAZk3b15233337LbbbjnnnHOSfPB2xJ///Of54x//2PT4IUOGeBUKYAMTTgCslwULFiRZ9dXf1nRFuOXefvvtJMmjjz6aHXbYYY2P/da3vtXskt7vvfdeqqurU11dvdYXqVi8eHEWL16crbbaKhUVFamsrEynTp3ywAMP5I033sjjjz+e6urqdOrUKXV1dXnttdeaXu15/fXXc/311+fee+9tts/lV+jr1q1bkg8+r9W9e/dmryjV1dVlwYIF6du3b7PnvvTSS9ljjz3SuXPnTJo0Kaeffnq6dOnStBY1NTWpqqpqtjbL33oIwIYjnABYL3PmzMk222yTt956q2nb73//+4waNarZF8YuXbp0lb/sv/baa+nQoUN233330s87nXjiiU2vtCxatKgpzJZ/tmnkyJFNj13+s3fZZZdmb3NbtmxZli5dmtmzZ2eHHXbIFltskYqKitx666056aSTcsIJJ2SvvfbKFltskdGjRze7mt0JJ5yQ/fffP/vtt98a5/nb3/42f//3f99s2yuvvJIk6dOnT7PtO+64Yy6++OKMGDGi2atTAGxchBMA6+Xpp59e67fZrcqjjz6az372s2t1kYhDDz206c+dOnVKQ0NDqqurV/r8T/L/PuP0zDPPrHS1vsbGxqZXqIqiyK9+9atUV1fnZz/7Wfbcc8/Mnj07NTU1Wbx4cfbbb7+cd9556dq1a375y1/miSeeWOMcJ02alP/4j//I3Xff3Wz7q6++mmTlcEqSb3/7201/XjE2V2d9P1cGwEcnnABYLw8++OAqv2NobTQ2Nub222/PkUceuU7PX9fvMVrxbX2NjY3Ze++9s8cee6SysjKPPvpozjrrrBRFkQ4dOuTEE0/MP/zDP2SbbbbJiSee2Oztdx/2pz/9KQcffHBGjRrV7NWvJHn22WfTvXv3dOnSZY1zW/6Zr1W58cYbM23atMyZMyc9evRYy6MFoCUIJwDW2bRp0/LUU0/lV7/6VbPtyy8EsfyVnWXLljW9VW3F2Ln++uvz6quv5vjjj2/xuS2fQ9krOEuXLs306dPzxhtv5Kqrrsorr7ySZ599NieffHKS5MADD8y2226b/fffPx//+MdXuY958+bliiuuyAUXXJAvfvGLzb6I99Zbb81///d/Z/z48Rk6dGjpvCsqKpq9pbGxsbHpGF5//fXceuutOfbYYzN8+PDSfQHQcoQTAOvsnHPOyZAhQzJo0KBm25e/atLQ0JAtt9wyp512Wi6//PL07NkzgwcPTpL89a9/zWmnnZajjjoqvXr1avG5Lb/a3+qu5rfcd7/73SxcuDA9e/bMtttum9ra2owbN67ZKz977bVX7r///owcOTKDBw9uuhjEcj/60Y9yww035Nxzz82YMWOave1wiy22yPjx4/O//tf/ykUXXVQ674kTJza7v2zZsqZjOfPMM3PWWWeV7gOAlldRrM2bqQHgQ4qiyMSJE7PlllvmS1/6UrOx9957L3PmzMlOO+2ULbbYIjNnzsxzzz2XL3/5y01vVbvvvvtyzjnn5N57722Vt509+uijGTZsWJ566ql85jOfaZF9Lv9+pw9btmxZ5syZk969e7fIz1nRZZddlosuuiivv/56i+8bgLUnnAAAAEqs3ZdeAAAAtGPCCQAAoIRwAgAAKNEur6rX2NiY1157LV27dl3llyYCAADtQ1EUmT9/frbffvtm3/P3Ye0ynF577bVVfnM7AADQPs2ePTs77LDDasfbZTh17do1yQeL061btzaeDQAA0Fbq6+vTp0+fpkZYnXYZTsvfntetWzfhBAAAlH6Ex8UhAAAASggnAACAEsIJAACgRLv8jBMAAGzqli1bliVLlrT1NDZ61dXVqaysXO/9CCcAANiEFEWROXPm5N13323rqWwyunfvnl69eq3Xd7gKJwAA2IQsj6Ztt902nTt3Xq8Y2NwVRZEFCxbkzTffTJJst91267wv4QQAAJuIZcuWNUXTNtts09bT2SRsueWWSZI333wz22677Tq/bc/FIQAAYBOx/DNNnTt3buOZbFqWr9f6fCZMOAEAwCbG2/M+mpZYL+EEAABQQjgBAABt4umnn85bb73V1tNYKy4OAQAAm4F+Z92zwX7WrHEHtMh+/vEf/zFf//rXc84556xy/JprrsmXv/zlPPLII/nNb36T22+/PT/4wQ9y6aWX5sQTT8zgwYPzne98p0XmUsYrTgAAQJuoqqpKz549VzteW1ubQw45JNXV1amurs5tt92Wt99+O0ny8MMPZ/vtt99QUxVOAABA26isrExRFKscW7x4cSoqKnLggQfmqaeeyltvvZVnn302AwcOzFNPPZVnn302e++9d5KksbExDQ0NrTpXb9UDAADaxNy5czNv3rxVji1evDi/+93vUl9fn7vuuisDBgzIm2++mddeey1vvfVWqqurM2jQoCxatChvv/12/vEf/zHXXnttq83VK04AAMAGt2jRorz88suZPn36Kse7dOmSsWPH5rXXXstBBx2UT33qU3n22WdzwQUXZPr06TnllFPy/PPP5xe/+EX23nvvVo2mxCtOAABAG3j00UdTU1OTSZMm5Z133kltbW2z8RkzZmTkyJG5/PLL09DQkNtvvz1HHHFEfvCDH2TSpElNj3/99dfTu3fvVp+vcAIAADa4G2+8MYcffngWLlyYSy65JGPHjm02/qlPfSpTpkxJt27dMnDgwDz88MPp06dP3n///fTq1Ss33XRTkuTFF1/MLrvs0urzFU4AAMAG9cILL+Tf//3fM3Xq1GyxxRYZMmRIjjnmmOy8885Nj5k6dWq++c1vZsGCBSmKIl/60pfy7rvvZs8998w999yThx56KI8//ngefvjh/OQnP2n1OQsngE3Uhvy+jk1RS33HCAAta9myZTn22GNz7LHHZuDAgUmSE088Md/61rcyefLkdO7cOUkybNiwvPLKKxk2bFj+5V/+JXvttVdGjhyZI444IklyzDHH5Iwzzshzzz2XPfbYo9Xn7eIQAADABrFs2bIcccQRqaura/Yq0XnnnZck2W+//fLWW281bX/ttddSU1OTE088MQcddFAee+yx7L///kmSww8/PI8//ngOOeSQdOjQodXn7hUnAADYDGzsr7Q/++yzOeGEEzJnzpxMnjw5Xbp0aRrr1KlT7r///nzlK1/JoEGDMnbs2BxxxBHZfvvtc8899+SWW27JmDFjMnLkyAwfPjwPPfRQjjvuuHzhC1/IjTfemP322y9f/epXW3X+XnECAABa1YIFC3LAAQekZ8+emTJlSnr06LHSY2pqavLwww/n29/+dm644Ya89957ueSSS7L77rvnzjvvzNSpU3P99dfnhBNOyKBBg9K/f/888MADue6663LggQfmoosuatVj8IoTAADQqjp37pypU6eudMnxD9tyyy0zbty4FEWRioqKbLPNNrnpppuaXTWvT58+ufvuu/O5z30uSfL1r389f/7zn9O9e/fWPAThBAAAtL6yaFpRRUVFkuToo49eaWz5Z5xWNGjQoHWf2FryVj0AANjEFEXR1lPYpLTEegknAADYRFRXVyf54DNDrL3l67V8/daFt+oBAMAmorKyMt27d8+bb76Z5IPPDi1/WxsrK4oiCxYsyJtvvpnu3bunsrJynfclnAAAYBPSq1evJGmKJ8p17969ad3WlXACAIBNSEVFRbbbbrtsu+22WbJkSVtPZ6NXXV29Xq80LSecAABgE1RZWdkiQcDacXEIAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKCGcAAAASggnAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKCGcAAAASggnAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACjxkcPp7bffTv/+/TNr1qymbTNmzMiQIUNSU1OTMWPGpCiKNhsDAABoaR8pnN56662MHDmyWTQ1NDRk1KhR2W233TJt2rTMnDkz48ePb5MxAACA1vCRwunQQw/NoYce2mzbxIkTU1dXl0svvTQDBgzI2LFjc91117XJ2Oo0NDSkvr6+2Q0AAGBtfaRwuuaaa3LKKac02zZ9+vQMHTo0nTt3TpIMGjQoM2fObJOx1bnwwguz9dZbN9369OnzUQ4bAABo5z5SOO20004rbauvr0///v2b7ldUVKSysjLz5s3b4GOrc/bZZ6eurq7pNnv27I9y2AAAQDtXtd47qKpKx44dm23r1KlTFixYsMHHampqVjnHjh07rvQcAACAtbXelyOvra3N3Llzm22bP39+OnTosMHHAAAAWsN6h9OQIUMyZcqUpvuzZs1KQ0NDamtrN/gYAABAa1jvcBo+fHjq6uoyYcKEJMm4ceMyYsSIVFZWbvAxAACA1lBRrMO3x1ZUVOTFF19Mv379kiR33XVXDjvssHTt2jXLli3L5MmT8+lPf7pNxtZGfX19tt5669TV1aVbt24f9fABNgr9zrqnraew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v7PuaespbNRmjTugracA7VqLvuL0zjvv5PTTT88uu+ySJJk4cWLq6upy6aWXZsCAARk7dmyuu+66VhsDAABoDS36itPpp5+er3/961m4cGGSZPr06Rk6dGg6d+6cJBk0aFBmzpzZamOr09DQkIaGhqb79fX1LXXIAABAO9Birzg99NBDefDBB3PRRRc1bauvr0///v2b7ldUVKSysjLz5s1rlbHVufDCC7P11ls33fr06dNShw0AALQDLRJOixYtyvHHH5+rrroq3bp1a9peVVWVjh07Nntsp06dsmDBglYZW52zzz47dXV1TbfZs2ev66ECAADtUIuE009+8pMMGTIkBxzQ/EOLtbW1mTt3brNt8+fPT4cOHVplbHU6duyYbt26NbsBAACsrRb5jNPNN9+cuXPnpnv37kmSBQsW5De/+U369euXJUuWND1u1qxZaWhoSG1tbYYMGZJf/OIXLToGAADQGlrkFaeHH344M2bMyJNPPpknn3wy//AP/5Af//jH+c///M/U1dVlwoQJSZJx48ZlxIgRqayszPDhw1t8DAAAoDW0yCtOO+ywQ7P7Xbp0ycc+9rF87GMfyzXXXJPDDjssY8aMybJlyzJ58uQPfnBVVYuPAQAAtIYW/wLcJBk/fnzTn0ePHp3nnnsu06ZNy7Bhw9KjR49WHQMAAGhprRJOH9a7d+/07t17g40BAAC0pBb7HicAAIDNlXACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKFHV1hMAAGDD6XfWPW09hY3arHEHtPUU2Eh5xQkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKCGcAAAASggnAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKCGcAAAASggnAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKCGcAAAASggnAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCEcAIAACghnAAAAEoIJwAAgBLCCQAAoIRwAgAAKCGcAAAASggnAACAEsIJAACghHACAAAoIZwAAABKCCcAAIASwgkAAKCE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9Lh33303FRUVmTVrVs4777xmYys66qijcuqpp7b6vDcnEyZMyPjx49OrV68kH/yj279//8yaNavZ4375y1+mb9++6dKlS0aMGLHSeHu2qjVb1/X67W9/m5122ilVVVXZc8898/TTT6/ycfvuu2/Gjx+//pPfhKxubdb0D+267C9JbrjhhnzmM59J9+7d861vfatd/RJ66623Zuedd86JJ56Yvn375tZbb02y7r+0rG5/H9Yez+nVrc26ntNrWuv2fE6vaMXzrCV+Ef/weWudP9CrV6/8/ve/z5gxYz5SPP3lL3/JPffck3nz5mXevHl54oknkiQNDQ0ZNWpUdtttt0ybNi0zZ85sd39frJWCzdq5555bJCl+9rOfFUVRFC+++GKRpDjyyCOLr33ta02PmzdvXpGkePHFF4tzzz232diKjjzyyOKUU05p/YlvJm688cZiv/32KxYsWFAURVHMnTu3GDp0aNNaL/f8888Xffr0Kf7yl78UL730UnHMMccUe++9d9tMeiOzqjVb1/V6/vnni5qamuLXv/51MWfOnOLggw8uhg0bttLjfvWrXxVJihtuuKFlD2Yjtqa1+cIXvlDcc889xbx584p58+YV9fX167W/Bx54oOjSpUtx//33F7NmzSr233//Yq+99mrV49tYzJs3r/jYxz5WPPXUU0VRFMWECROKvn37FosWLSr69etXHH/88cXzzz9f7L///sX111+/zvv7sPZ4Tq9pbdblnF7T/trzOb2iFc+zdT2nV7e/orDOq/LGG28Ue+65ZzF58uSiKIria1/7WrH11luvdPu///f/FkuWLCm6du1azJ8/f6X93HnnnUVNTU3x/vvvF0VRFE8++WTxxS9+cYMey6ZAOG3mzj333KKysrIYMGBA0djYKJw2oBtvvLE44IADioULFzZt+/KXv1xcdtllK4XTbbfdVhx88MFN9x9++OFiu+2225DT3Witas3Wdb3uvvvu4qqrrmq6P2nSpKJDhw7NHvP2228XPXv2LHbZZZd29Uvm6tZmTf/Qrsv+iqIojjjiiOLUU09tGvvrX/9aJCneeuut9TyKjd/LL79c/OpXv2q6P3369KJr167r/EvL6va3ovZ6Tq9ubdb1nF7TWrfnc3q5D59n6/uL+KrOW+u8am+++WbxhS98oZg8eXIxZ86c4sUXX1zpVldXV/zlL38punTpUgwYMKDo1KlTsc8++xQvvfRSURRFcd555xX77bdf0z4bGxuLmpqatjqkjZa36rUDf//3f5+5c+dm4sSJbT2VdmPChAm5/fbb8+///u/p1KlT0/Zrrrkmp5xyykqPHzhwYCZNmpQnnngidXV1ufLKK/OVr3xlQ055o7WqNVvX9Ro5cmROOOGEpvvPPPPMSm/ROf300/P1r389Q4cObZkD2ESsbm3++7//O0VRZNddd82WW26ZfffdNy+//PI67y9J3nrrrfTt27dpbPmXl1dVVbXU4Wy0+vTpk8MPPzxJsmTJklxyySU58MADM3369AwdOjSdO3dOkgwaNCgzZ85c5/2tqL2e06tbm3U9p9e01u35nF7uw+fZup7Tq9tfYp1Xp0ePHvnd736XY445JvPmzUu/fv1WunXr1i1PP/10Pv3pT+eWW27JzJkzU11dneOPPz5JUl9fn/79+zfts6KiIpWVlZk3b15bHdZGSTi1A126dMkxxxyTK664oq2n0i7cd999ufrqq3P77bev9A3dO+200yqfM3DgwBx00EEZPHhwunfvnqlTp+aSSy7ZENPd6K1qzda0XqNHj0737t1Xun34/F+8eHEuueSSfO9732va9tBDD+XBBx/MRRdd1LoHtZFbcW3W9A/tuq71rrvumt/97ndNn3e44YYbsscee2TrrbfesAfahqZPn56ePXvm/vvvz2WXXbbGX1rWZp0/vL/lnNMrr836ntOrWuv2fk6v6jxbn3N6dedte1/nNbn88suzzz77ZJdddlntYw4//PBMmTIlQ4YMSf/+/XPFFVfk/vvvT319faqqqlb6naVTp05ZsGBBa099k9K+E70d+f73v59PfvKTef7559t6Kpu9vffeO9tss01uu+22pv86WWbKlCm5++67M3Xq1AwcODAXXnhh9t9//zz22GOpqKho5Rlveta0Xj//+c+zcOHClZ5TW1vb7P4555yTLl265LjjjkuSLFq0KMcff3yuuuqqdOvWbYMcx8ZqxbWprq5udh5fccUV2WmnnVJfX7/Oa33GGWc0fQi5U6dOefTRRzNhwoTWPaiNzKBBg/Lggw/mjDPOyNFHH51PfOITq/2lZW3W+cP7u/POO53T/79Vrc36nNOr2l97PqdXd56t6RfxNa3zms7b9rzOa3LGGWdk6dKlufLKKzN69Oj88Y9/XOkxP/3pT/P973+/2bbu3bunsbExr7/+emprazNjxoxm4/Pnz0+HDh1ac+qbHOHUTgwYMCD77rtv/u3f/q2tp7LZ69SpU26//fYccsghWbhwYY499tjS5/z617/OoYcemj322CPJB3/BXX311Zk+fXp23XXXVp7xpmd91+uBBx7I1VdfnSlTpqS6ujpJ8pOf/CRDhgzJAQcc0JpT3+itam1WtOI/tGv6L5tr2l9tbW0eeeSRPP/887nkkksyb968HHbYYS1+LBuzioqKfP7zn8/48eOz44475sILL1ztLy09evT4yPubN29eLrnkEud0Vr02NTU1TeMf9Zxe1f7a8zm9ur871/SL+JrO6R/+8IerPW/b8zqvSlEUOemkk9K5c+emVz/XFKWnnXZahg4dmm9+85tJkscffzxbbLFF+vTpkyFDhuQXv/hF0+NnzZqVhoaGlf5DWHsnnNqRU045Jfvuu2+S5POf/3zuvPPOprHllyv3f5CW0bFjx9x222059NBDs3Dhwpx00klrfPzSpUubvY94/vz5ef/997Ns2bLWnuomaX3W629/+1sOP/zwXHXVVRk4cGDT9ptvvjlz585N9+7dkyQLFizIb37zmzz22GPt5j84rGpt1vQP7brsb0Xbb7997rjjjlxzzTVNn1XY3E2aNCkTJ07MxRdfnOT/fTbjk5/85Dr90rK6/W2xxRbt/pxe3dr8+Mc/zhe+8IWPfE6vaa2Xa4/n9OrOs379+mXJkiVNj1vbc3ptztv2uM4f1tjYmOOOOy49e/bMBRdc0LS9Z8+eq33Orrvumh/+8Ifp1atXli5dmpNOOilHHXVUOnfunOHDh6euri4TJkzIt7/97YwbNy4jRoxot+u7Wm15ZQpa34evkDdw4MAiSfHkk08W1dXVxR133FHMnj27OOqoo4rPf/7zTc/ZZ599itmzZze7LVu2rDjyyCOL73znO822v/LKK210dBu/JUuWFN/85jeLiy66qNn2fOiqerfcckux5ZZbFpdeemlx0003FV/60peKvn37FosXL97AM954rbhm67peCxYsKD71qU8V3/3ud4v58+c33RobG4vZs2c3uwLRN77xjeLiiy8u5s6duwGOru2tbm3Gjx9f7LzzzsXkyZOLBx98sPjkJz9ZHHPMMeu8v8bGxqbHjBs3rvi7v/u71jysjc6rr75adO3atfj5z39evPzyy8W3v/3tYp999imWLFlS9OjRo7jxxhuLoiiK448/vhg5cuQ6768oinZ/Tq9ubW688cZ1OqfXtNbLtcdzek3n2bqc02tz3rbHdf6wW265pTj33HM/8vPOOuusonv37kWfPn2Kk08+uXjvvfeaxu68885iyy23LLbddttim222KWbMmNGCM948CKfN3IfD6eqrr276BfTqq68u+vfvX2y11VbFXnvtVfz1r39tek6SlW6vv/56ceSRR660vWPHjm10dJuGpUuXFocffnjxxBNPNG37cDg1NjYW5513XtG3b9+iurq6+PznP19MmzZtw092I7bimq3ret15552rPLdX/N9iuSOPPLJdXbp5TWuzpn9o12V/RfHBVyDU1tYWjz32WCsf2cbnD3/4Q/GpT32q6Nq1a3HQQQcVb775ZlEU6/5Ly+r292Ht7ZwuitWvzbqc02vaX1G073N6RSueZy3xi/iHz1vr3LpeeeWV4q677lrt3yPtXUVRrMPXOAMALe7VV1/NtGnTMmzYsLX6bBNs7JzTbE6EEwAAQAnf4wQAAFBCOAEAAJQQTgAAACWEEwAAQAnhBAAAUEI4AQAAlBBOAAAAJYQTAABACeEEAABQ4v8D29u4RDNoI1sAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize = (10, 6))\n",
    "x = np.array([\"NULL\",\"<18\",\"18-24\",\"25-29\",\"30-34\",\"35-39\",\"40-49\",\">=50\"])\n",
    "#<18岁为1；[18,24]为2； [25,29]为3； [30,34]为4；[35,39]为5；[40,49]为6； > = 50时为7和8\n",
    "y = np.array([user_info[user_info['age_range'] == -1]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 1]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 2]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 3]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 4]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 5]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 6]['age_range'].count(),\n",
    "             user_info[user_info['age_range'] == 7]['age_range'].count() + user_info[user_info['age_range'] == 8]['age_range'].count()])\n",
    "plt.bar(x,y,label='人数')\n",
    "plt.legend()\n",
    "plt.title('用户年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户年龄分布')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAAHDCAYAAAAwQ44XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvSklEQVR4nO3de1jUdd7/8dcww0EUBNIwFREP1Y2GppJILe62VJZYbEezX3faQU1X88Jl1bLVTmpb0WHz1jwkaql5d7sdTDtqrqV2RynFDesZw2Om7AABg8D394cXs05+StGZZsTn47rmupzvZ2Z4f3U3n36/35mxWZZlCQAAAB6C/D0AAABAICKSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgCcU44dO6bt27c3+nlLly7V/v37vT7PkSNHVFNTc9qPd7lcHr/+8MMPz+jnjh07VsuWLTuj5wI4PUQSAJ95//33ZbPZTvv2xhtvnPI1H374YaWnp+vYsWOnPcemTZs0ZMgQZWVlNWr+ffv2acWKFZKkm2++WS+++KJxnl69eul0vuGppKRE8fHxWrNmjSRp8+bNuu6667Rx48ZGz/Xyyy9r9+7djXoegMYhkgD4THBwsCSpqqrKfWuIjhO3VVRUSJLCwsJO+ZqjR49WSUmJ3nzzzdOa4dixYxo1apSioqL017/+VRUVFSfdysvLdfToUR06dMgjvv75z3/qL3/5iySpvr5e4eHhqq6udh8NsixLn3zyibZt26avv/76lLPMmDFDtbW16t27tyQpJSVFGRkZGjdunGpra43PKSsrU2Vlperq6tzbZs2apcjISI0ZM+akx9fX16umpsb9ewrgzDn8PQCApsvhOP6fmBPjpyGcTtzWEAgNaw1qamq0a9euk1734YcfVkxMjP75z396bI+IiFC7du08tk2YMEGbN29WdHS0evXqJUmqq6vTv/71L0VHRysoKEiWZcnlcsnlcmnTpk3uiAkODlZISIgkyW63a/z48frTn/6khx56SI8//rjee+89HTx4UBMnTtQtt9yijRs36qKLLjL+XuzYsUPz58/X008/rZYtW7q3P/fcc+rRo4eeeOIJPfbYYyc9LykpSXv27DG+ZkREhHG7JPXt21ebNm362XUAp0YkAfCZoKDGHaz+6eN37typxMTE037+bbfdpuXLl7vvL168WM8//7wGDx6spUuXurcXFBTosssu09dff62OHTsaX6umpkbV1dUeM7300ksaOnSoLMtSbW2tHn30UQ0fPlxTpkzR559/rquuukpvvfWWLrvsMo/Xqq+v1z333KOEhASNGjXKY+3iiy/W9OnTlZWVpfbt2+uBBx7wWP/4449ls9kUGhoqh8OhP//5z1q7dq0+++wzFRcXq6ioSJmZmSfN3xB3AM4ckQTAZ2w2myTPo0b19fUnbfs5DUeWdu/e/bMx06Bnz54eYbB06VINGzZMqampWrBgwc8+r76+3n2Kym63KzQ0VJKUm5urrKwshYSEqE2bNqqtrdWnn36qsWPH6o9//KMcDodKSkrUp08fTZs2Tf/93/+t6667Tn369NGECRP0+OOPu3/GU089pS+//FKfffbZSUfLJGncuHHauXOnhg8frq1bt2ratGnufenSpYv7cf/7v/+r119/XStWrFB8fLxWrlypZ555RiNHjjzl7yWAxuOaJAA+03Axc3V1tfvWcE3Sidt+7vqZhtN1p8tut7t/feWVV2rChAl655131KxZM9ntdjkcDjkcDvXs2VOS1LlzZ9ntdgUHB6t58+Z65pln3M8fPny4KioqdPToUR08eFCrVq3SkSNHVFZWprS0ND355JOaOXOm2rRpo+nTp6umpkZr167VLbfcomuvvdb9OgsXLtSUKVM0btw4tWrVSiUlJdq7d+9JtwkTJmj8+PHKyclRjx499OWXX3rs26FDh3Tbbbfpvvvu00033STpeEQ2RB0A7+NIEgCfaThqdKYaoqeysvKUFyLX19e7j1xJUocOHfTUU09JOn4a74MPPlB6erqkf59u27lzpzp27CjLslRTU3PS6b4FCxaoa9eu6tmzp/r27av8/Hz9+OOPat68uRYuXKg77rhDktSrVy/l5+fruuuu05IlS9zPLygo0H333aeRI0eqrKxMnTt3/sV9eOSRR7Rq1SpNnTpVF198sXt7aWmpMjIy9N1332nu3LmaO3eux/NO3G9Jmjt3ru6///5f/FkATo1IAuAzDe8UOzFwqqurT9p24ju3TtTwLrJu3bqd1s9rOEL0UyceYTJpuObnp958801lZGTo2LFjuuiii5SUlKTRo0erefPmuv766zVz5kzZ7XYNHjxYu3fv1uzZs9WxY0cNGDBAktS9e3d98cUX6tWrl8rLyzV9+nRt2LBBGRkZ2rp1q9q2bev+WbGxse7nNjxfOv52/4EDB6q0tFR9+vRR7969NXnyZEnHTym+8sor+vTTT92PT05O5ugS4CVEEgCfqayslGR+F9YvvTOrwZEjRyRJGzduVPv27X/xsXfeeafH2+grKioUHBys4ODg076AvKamRjU1NWrevLlsNpvsdrvCwsL00Ucf6dChQ/ryyy8VHByssLAwOZ1O7d+/330U58CBA3r11Ve1atUqj9dseKdcZGSkpOPXV0VFRXkcKXI6naqsrFSHDh08nrtnzx5dccUVCg8P15o1azR+/Hi1aNHC/XsRHR0th8Ph8XvTcPoQwNkjkgD4zMGDB3XBBRfohx9+cG9buXKlBg0a5PHhi7W1tca/2Pfv36+QkBD16dPnlNcnjR492n0Epbq62h1hDdciZWRkuB/b8LMvueQSj1NVdXV1qq2tVUlJidq3b6+goCDZbDYtW7ZMY8aM0ciRI3XVVVcpKChImZmZHu8qGzlypG644QZdf/31vzjn22+/rd/+9rce2/bu3StJiouL89geHx+vZ555Runp6R5HnQD8OogkAD5TVFR02qfKTDZu3KjLLrvstC7gHjx4sPvXYWFhcrlcCg4OPul6Henf1yRt3br1pHfN1dfXu488WZal1157TcHBwXruuefUt29flZSUKDo6WjU1Nbr++us1depURUREaPHixdq8efMvzrhmzRp9/PHHevfddz2279u3T9LJkSRJ//mf/+n+9el8qvfZXgcG4N+IJAA+88knnxg/w+d01NfX680339Q999xzRs8/088JOvHUXH19vfr3768rrrhCdrtdGzdu1MSJE2VZlkJCQjR69GjdeOONuuCCCzR69GiPU2g/9dlnn+m2227ToEGDPI5qSdK2bdsUFRWlFi1a/OJsJ37v208tXLhQeXl5OnjwoFq3bn2aewvglxBJAHwiLy9P3377rV577TWP7Q0XaTccsamrq3OfbjoxbF599VXt27dPI0aM8PpsDTOc6shMbW2t8vPzdejQIc2aNUt79+7Vtm3bNHbsWEnHv8/twgsv1A033KCuXbsaX6O0tFQvv/yynnrqKV155ZUeH2q5bNkyffPNN8rNzVVKSsop57bZbB6nJevr6937cODAAS1btkz333+/0tLSTvlaAE6NSALgE5Mn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sjRixAiNGzdOnTt3liStXr1aTqdTOTk56ty5s6ZNm6b58+f7bA0AAKDRkRQZGanf//73Cg4O9sU8mjt3rrZs2aKEhAStXLlSx44dU35+vlJSUtwfO5CUlKTCwkJJ8skaAABAoyPpb3/7m4YPH66CggKvD1NRUaHJkyera9eu2rt3r3JycpSWlqaysjKP03k2m012u12lpaU+WTNxuVwqKyvzuAEAgKar0ZE0duxYffPNN+rRo4datWqlTp06uW9na8WKFfrxxx+1Zs0aPfroo/rwww/1r3/9S6+++upJ76gLCwtTZWWlHA6H19dMpk+frpYtW7pvcXFxZ72/AAAgcJ325yQ18OXFzXv37lXfvn0VExMjSXI4HEpKSlJxcbEOHz7s8djy8nKFhIQoJibmpKNaZ7tmMmnSJGVlZbnvl5WVEUoAADRhjY4kb76L7afi4uJUVVXlsW3Pnj167rnn9Pzzz7u3FRcXy+VyKSYmRsnJyZo3b55X10xCQ0P5fCgAAM4jjT7d1vB2/xPf+t9wO1sDBw5UUVGRZs+erb179+qll17Sli1bdO2118rpdLq/P27GjBlKT0+X3W5XWlqa19cAAAAafSSpvr7e/euqqip9+eWXeuyxx/Too4+e9TAxMTF6//33NX78eGVlZalNmzZatmyZunTpojlz5mjIkCHKzs5WXV2d1q1bd3wHHA6vrwEAADQ6kk7UrFkzpaWl6Z133lFaWpq++uqrsx4oJSVFn3/++UnbMzMztX37duXl5Sk1NVWtW7f26RoAADi/nVUkNfj+++914MABb7zUL2rXrp3atWv3q60BAIDz1xlduG2z2dz36+rqdODAAY0bN86bcwEAAPjVWX8EgM1mU/v27b3yOUkAAACBotHvbuvfv7/69++vZs2a6YcfflCzZs0IJAAA0OQ0+kjSvn37dNNNN2n79u1q27at9u/fr4svvlhvv/222rZt64sZAQAAfnWNPpI0YsQI9enTR4cPH1ZRUZEOHTqkXr166YEHHvDFfAAAAH7R6CNJn332mb799lv313eEhYXpkUceUVJSkteHAwAA8JdGH0m67LLLtHDhQo9tCxcuVPfu3b02FAAAgL81+kjSrFmzdN111+n1119XQkKCdu3apfLycn344Ye+mA8AAMAvGh1J3bt317Zt2/Tuu++qpKREQ4cO1cCBA9W8eXNfzAcAAOAXjT7dVlhYqN/85jey2+3Kzs7WE088ob59+2rbtm2+mA8AAMAvzujdbVdffbWuvfZaSdKmTZuUkZGhkSNHen04AAAAf2n06bYtW7Zo+fLlatmypSSpefPmGjNmjBITE70+HAAAgL+c0bvbFi9e7LFt8eLF6tatm9eGAgAA8LdGH0maOXOmrr/+ei1cuFAdO3bU7t27VVpaqvfff98X8wEAAPhFoyPp8ssv1/bt27Vy5Urt3btXd999twYOHKiIiAhfzAcAAOAXjY4kSYqIiNCdd97p7VkAv7ryb1f6e4RG+XzM5/4eAQCatEZfkwQAAHA+IJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAg4COpAEDBig3N1eSVFBQoOTkZEVHRys7O1uWZbkf54s1AABwfgvYSHr99df1wQcfSJJcLpcGDRqk3r17Ky8vT4WFhe548sUaAACAw98DmBw9elTjx4/XJZdcIklavXq1nE6ncnJyFB4ermnTpmn06NEaNmyYT9YAIBA89f9u9fcIjfLIa2/6ewTAqwIyksaPH68//OEPqqqqkiTl5+crJSVF4eHhkqSkpCQVFhb6bA0AACDgTretXbtWn3zyiZ5++mn3trKyMiUkJLjv22w22e12lZaW+mTNxOVyqayszOMGAACaroCKpOrqao0YMUKzZs1SZGSke7vD4VBoaKjHY8PCwlRZWemTNZPp06erZcuW7ltcXNzZ7CoAAAhwARVJTzzxhJKTkzVw4ECP7TExMTp8+LDHtvLycoWEhPhkzWTSpElyOp3uW0lJyZnuJgAAOAcE1DVJS5Ys0eHDhxUVFSVJqqys1PLly9WxY0cdO3bM/bji4mK5XC7FxMQoOTlZ8+bN8+qaSWho6ElHngAAQNMVUEeS1q9fr4KCAm3ZskVbtmzRjTfeqMcff1z/+Mc/5HQ6tWjRIknSjBkzlJ6eLrvdrrS0NK+vAQAABNSRpPbt23vcb9GihVq1aqVWrVppzpw5GjJkiLKzs1VXV6d169ZJOn69krfXAAAAAiqSfurED3fMzMzU9u3blZeXp9TUVLVu3dqnawAA4PwW0JH0U+3atVO7du1+tTUAAHD+CqhrkgAAAAIFkQQAAGBAJAEAABgQSQAAAAZEEgAAgAGRBAAAYEAkAQAAGJxTn5MEAGgaip5a4+8RGu0/Hrna3yPgV8aRJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwCLhIevvtt9WpUyc5HA717dtXRUVFkqSCggIlJycrOjpa2dnZsizL/RxfrAEAgPNbQEXSzp07NWzYMM2YMUP79u1TfHy87r//frlcLg0aNEi9e/dWXl6eCgsLlZubK0k+WQMAAAioSCoqKtK0adN0++23KzY2Vg8++KDy8vK0evVqOZ1O5eTkqHPnzpo2bZrmz58vST5ZAwAAcPh7gBNlZGR43N+6dau6dOmi/Px8paSkKDw8XJKUlJSkwsJCSfLJGgAAQEAdSTpRTU2Nnn32WY0aNUplZWVKSEhwr9lsNtntdpWWlvpkzcTlcqmsrMzjBgAAmq6AjaTJkyerRYsWGj58uBwOh0JDQz3Ww8LCVFlZ6ZM1k+nTp6tly5buW1xcnBf2EgAABKqAjKSPPvpIs2fP1pIlSxQcHKyYmBgdPnzY4zHl5eUKCQnxyZrJpEmT5HQ63beSkhIv7CkAAAhUARdJu3bt0l133aVZs2YpMTFRkpScnKxNmza5H1NcXCyXy6WYmBifrJmEhoYqMjLS4wYAAJqugIqkqqoqZWRkKDMzUzfddJMqKipUUVGh3/zmN3I6nVq0aJEkacaMGUpPT5fdbldaWprX1wAAAALq3W0ffPCBioqKVFRUpLlz57q37969W3PmzNGQIUOUnZ2turo6rVu3TpLkcDi8vgYAABBQkZSZmfmzn3rdsWNHbd++XXl5eUpNTVXr1q09nuftNQAAcH4LqEg6lXbt2qldu3a/2hoAADh/BdQ1SQAAAIGCSAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwcPh7AAAAmpqpU6f6e4RGOdfm/bVwJAkAAMCASAIAADAgkgAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAwIJIAAAAMiCQAAAADIgkAAMCASAIAADAgkgAAAAyIJAAAAIPzPpIKCgqUnJys6OhoZWdny7Isf48EAAACgMPfA/iTy+XSoEGDdN1112nZsmUaO3ascnNzNWzYMH+PBgBAQFr+31f4e4RGuf22/z3j557XR5JWr14tp9OpnJwcde7cWdOmTdP8+fP9PRYAAAgA53Uk5efnKyUlReHh4ZKkpKQkFRYW+nkqAAAQCM7r021lZWVKSEhw37fZbLLb7SotLVV0dLTHY10ul1wul/u+0+l0v8ZP1bmqfDSxb5j24XxUW1Xr7xEapTF/bj/WNt19q3JV+nAS72vMvlUfO+bDSbyvMftWUf2jDyfxjcbs34l/X5wLGrNvlZV1PpzE+366bw33T+caZJt1Hl+pPGHCBB07dkw5OTnubXFxcdq0aZPatWvn8dipU6fqscce+7VHBAAAPlBSUqL27dv/4mPO6yNJMTExKigo8NhWXl6ukJCQkx47adIkZWVlue/X19fr6NGjuuCCC2Sz2Xw+a1lZmeLi4lRSUqLIyEif/7xfE/t2bmLfzk1Ned+kpr1/7Jt3WJal8vJytW3b9pSPPa8jKTk5WfPmzXPfLy4ulsvlUkxMzEmPDQ0NVWhoqMe2qKgoX494ksjIyCb3f44G7Nu5iX07NzXlfZOa9v6xb2evZcuWp/W48/rC7bS0NDmdTi1atEiSNGPGDKWnp8tut/t5MgAA4G/n9ZEkh8OhOXPmaMiQIcrOzlZdXZ3WrVvn77EAAEAAOK8jSZIyMzO1fft25eXlKTU1Va1bt/b3SEahoaGaMmXKSaf8mgL27dzEvp2bmvK+SU17/9i3X995/e42AACAn3NeX5MEAADwc4gkAGfkyJEj2rBhg3744Qd/jwIAPkEknWOOHDmihIQEFRcX+3sUr2mK+yRJb7/9tjp16iSHw6G+ffuqqKjI3yN5zbJly9SlSxeNHj1aHTp00LJly/w9kk8MGDBAubm5/h7Da8aMGSObzea+denSxd8jed3EiRM1aNAgf4/hVbm5uR5/bg23pvK/zcWLF6tDhw5q0aKF0tPTA+vvAgvnjMOHD1spKSmWJGv37t3+HscrmuI+WZZl7dixw4qOjrbeeOMN6+DBg9Ztt91mpaam+nssrygtLbVatWplffvtt5ZlWdaiRYusDh06+Hkq73vttdcsSdaCBQv8PYrX9OvXz3rvvfes0tJSq7S01CorK/P3SF717bffWhEREdaOHTv8PYpXuVwu959ZaWmpVVJSYrVq1crauXOnv0c7azt27LDi4uKsr776ytqzZ4917733Wv379/f3WG4cSTqHDB48WIMHD/b3GF7VFPdJkoqKijRt2jTdfvvtio2N1YMPPqi8vDx/j+UV5eXleuGFF9S9e3dJUo8ePVRaWurnqbzr6NGjGj9+vC655BJ/j+I1tbW1KigoUFpamqKiohQVFaWIiAh/j+U1lmVpxIgRGjdunDp37uzvcbwqJCTE/WcWFRWlRYsW6eabb1anTp38PdpZ27x5s1JSUtSrVy916NBBw4YN07Zt2/w9lhuRdA6ZM2eOHnroIX+P4VVNcZ8kKSMjQyNHjnTf37p1a5M5tREXF6e77rpLknTs2DE9++yzuvnmm/08lXeNHz9ef/jDH5SSkuLvUbzmm2++kWVZ6tmzp5o1a6YBAwbou+++8/dYXjN37lxt2bJFCQkJWrlypY6dY18OfLqqq6v14osvatKkSf4exSsSExO1Zs0abd68WU6nUzNnztQ111zj77HciKQAk5mZ6fEvhobbyy+/3CT+1fBTTXGffqqmpkbPPvusRo0a5e9RvCo/P1+xsbH68MMP9cILL/h7HK9Zu3atPvnkEz399NP+HsWrioqK1K1bNy1dulSFhYUKDg7WiBEj/D2WV1RUVGjy5Mnq2rWr9u7dq5ycHKWlpam6utrfo3ndkiVLlJKSoo4dO/p7FK9ITEzUrbfeql69eikqKkpffPGFnn32WX+P9W/+Pt8HTwcPHrR279590s3pdLofoyZ2/Y5lNc19apCdnW316NHDqqmp8fcoXlVfX299/fXX1tVXX21lZmb6exyvqKqqsrp27WqtXLnSsizLuueee5rUNUknKi4utoKCgjz+23KuWrhwoRUeHm4dOXLEsizLOnbsmHXppZdar7zyip8n877k5GRr1apV/h7DazZu3Gi1bdvW+uKLL6zy8nLr4Ycftvr06WPV19f7ezTLsizrvP/E7UATGxvr7xHgRR999JFmz56tTZs2KTg42N/jeJXNZtPll1+u3NxcxcfHq7S0VNHR0f4e66w88cQTSk5O1sCBA/09is9FRUWpvr5eBw4cOOe/LHXv3r3q27ev+8vJHQ6HkpKStHv3bj9P5l07duzQjh07lJ6e7u9RvOaNN97Q4MGDdcUVV0iSnnzySc2ePVv5+fnq2bOnf4cTp9sAn9m1a5fuuusuzZo1S4mJif4ex2vWrFmj7Oxs932H4/i/tYKCzv3/nCxZskRvv/22+zT3kiVLNGrUqCZxqjQrK0vLly933//yyy8VFBSkuLg4P07lHXFxcaqqqvLYtmfPHsXHx/tpIt9Yvny5MjIymtQ/uGpra3Xo0CH3/fLycv3444+qq6vz41T/xpEkwAeqqqqUkZGhzMxM3XTTTaqoqJAkNW/eXDabzc/TnZ1LL71UmZmZ6tq1q66//npNnjxZ1157rVq2bOnv0c7a+vXrVVtb677/pz/9SSkpKRo6dKj/hvKSnj176pFHHlGbNm1UW1urMWPGaOjQoQoPD/f3aGdt4MCBGjNmjGbPnq2MjAytWLFCW7Zs0YABA/w9mle9//77GjZsmL/H8Korr7xS9957r55//nnFxsZq3rx5io2NVVJSkr9HO87f5/vQeGqC1+80tX36+9//bkk66dZU9vH999+3/uM//sOKiIiwbr31Vuv777/390g+0dSuSZo4caIVFRVlxcXFWWPHjrUqKir8PZLXbNy40UpNTbWaNWtmJSQkWH//+9/9PZJXVVZWWiEhIVZRUZG/R/Gq+vp6a+rUqVaHDh2s4OBg6/LLL7fy8vL8PZYbX3ALAABgcO5fRAAAAOADRBIAAIABkQQAAGBAJAEAABgQSQAAAAZEEgAAgAGRBAAAYEAkAQAAGBBJAAAABkQSAACAAZEEIOCtX79ePXv2VHh4uJKTk1VQUCBJ+uabb9S9e3e1atVKWVlZuvTSS/W3v/1N0vEvA73ssssUFRWl+++/Xy6X67R+VseOHfXxxx/r4YcfVps2bZSfn+9emz17tuLi4hQREaHMzEyVl5dLkqZOnaqhQ4fq8ccfV1RUlOLj47V+/Xr385YuXao2bdqoa9euys7O1oUXXqj8/HxZlqVnnnlG8fHxuuiii/Tiiy9667cMgDf4+bvjAOAX1dXVWRdeeKH15JNPWgcOHLDGjh1rDRgwwLIsy+rXr581bdo0Kz8/34qMjLQ2bNhgHT161NqxY4cVEhJizZ8/39qxY4fVs2dP64knnjitnxcfH2+lpKRY99xzj7VmzRqrvLzcsizL+uabbyy73W599NFHVklJidWvXz9rxowZlmVZ1pQpU6zWrVtbd999t7Vz507rzjvvtH7zm99YlmVZpaWlVosWLay1a9daixcvtmJjY60DBw5YVVVV1qJFi6zo6Ghrw4YN1oYNG6wWLVpY69ev98HvIoAzwZEkAAEvPz9fWVlZ2rNnj8rLy7Vt2zZJ0pYtW3TLLbcoKSlJiYmJKi4uVnR0tJYuXarLL79c9957rzp37qyRI0fqnXfeOe2f17JlS+Xm5up3v/udWrRoIUnq2rWrDh48qOTkZBUVFcmyLPcckmS32zVnzhx16tRJQ4cOVUlJiSRp27ZtioiI0G9/+1vddtttOnTokCzLUlhYmBYuXKjhw4erX79+6tevnzIyMho1JwDfcvh7AAD4JUFBQcrJydG8efPUqVMnxcfHq66uTpLUpUsXbdy4Ua1atdL27duVmJgoSdq3b5++/vprRUVFSZJqa2vdsXM6xowZc9K2qqoq3X///Vq3bp0uv/xyORwO9xyS1K9fP4WFhUmSQkJCZFmWJCk+Pl6lpaXauXOn9u7dq5iYGMXGxrrn3LBhg2bPni1Jqq6uVmZmZuN+gwD4DJEEIKB9+umnmjVrlnbs2KHY2FitWrVKX331lSSpW7duGjt2rB544AH98Y9/VI8ePSRJ7du314033qhnn31WklRXV6fKysrT/pnNmzc/aduLL76ow4cP69ChQwoJCdGf//xnff/99+71yMhI42uFhYXp0ksvVbdu3WS327VgwQIFBQW557zvvvt06623SpJcLpdCQkJOe04AvsXpNgABraKiQpLkdDr1+eefKysrS5ZladeuXfrHP/6hzz//XDt37lROTo77OXfeeafWr1+v7du3SzoeOMOGDTvrOSzL0g8//KAlS5Zo1qxZ7qNFv+R//ud/1K5dO23evFklJSW6/fbb3Wv33HOPli5dqvLyclVWVmr48OGaOXPmWc0JwHuIJAABbcCAAbrxxhvVq1cvjRw5Ug888ID279+v5s2bKzY2Vv3791dCQoKaNWumkSNHSpI6deqkhQsXKisrS926dVNBQYGWLl16VnM89NBDsixLF198sRYsWKD77rtPW7ZsOeXzrrnmGn3++edKTU1Vq1at1KpVK82bN0+SdNddd+mOO+7QwIEDlZqaqoSEBD3++ONnNScA77FZp/NPIQAIMPPnz9fy5cs1b948hYeHKz8/XzfccIO+//77nz315Q9333234uPjNWbMGNlsNi1atEhLly51nzIEELg4kgTgnHT11VertrZW3bt310UXXaQHH3xQzz333C8G0meffaaoqCjjLSsryydz3nXXXXr33XeVkJCgjh076s0339Rzzz3nk58FwLs4kgTgvFFdXa2DBw8a1yIiInTBBRf8yhMBCGREEgAAgAGn2wAAAAyIJAAAAAMiCQAAwIBIAgAAMCCSAAAADIgkAAAAAyIJAADAgEgCAAAw+P+mfYVTBGnCFgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'age_range', order = [-1,1,2,3,4,5,6,7,8], data = user_info)\n",
    "plt.title('用户年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户性别分布')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x='gender',order = [-1,0,1],data = user_info)\n",
    "plt.title('用户性别分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户性别年龄分布')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHDCAYAAADIo3XgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABAI0lEQVR4nO3deVxWdf7//+fFxSYqWxgqgqJY5kKaYajfsDFTJ0XJaXFp0TbN0oqGz+SSOdaolZpto5IW0rjk1PixMW1TM3PpE5oowSQuJG6Jxlxg6CXL+f3hjysJUsTr4kLO4367ndt4zvu8z/U6F408fZ/3OcdiGIYhAAAAE/JwdwEAAADuQhACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRAC4HTFxcXKzs6u9v5nzpzRmTNnXFjRr9LT0/XWW2/9bvtnn32mXbt2Of1zi4qKZLPZqr2/3W53/NkwDH311VeX1L/cm2++qZkzZ+rs2bOX3BcwA4IQYHKffPKJLBZLtZf333//osecOHGi+vTpo+Li4mrV8MADD+jee++tsu3//u//1LRpU+Xl5VXZXlJS8ru1JicnV9r/u+++08yZM6s8VmFhoe69917deeedKiwsrFbtklRaWqqUlBQVFRXp1Vdf1Z133llpn1WrVikkJERHjhy56PHKysrUrVs3vfLKK5LOhaghQ4bo73//e7VrKvfGG29ow4YN8vb2vuS+gBkQhACT8/LykiSdPn3asfzrX/+qtO3UqVOSJF9f34se8/HHH1dubq4++OCDatXg7e1d4Rf1vn37FB0drWPHjslqteqnn3763V/knp6e8vDw0DvvvKPdu3c7lubNmztqXbNmjaZPn+7Y32q1VnmsiRMnKi8vT3PnzpXFYtGpU6cqLfn5+Tp+/Ljj+yg3atQoFRUVyWKxyNfXV2fPnlVRUZGj/YsvvlBJSUm1vpMPP/xQu3btUo8ePSRJDRs21IQJE/TSSy8pNze3yj5FRUU6depUhfD5xRdfaM+ePXruuecq7W8YhoqLi1VQUHDReoD6jCAEmJynp6ekcwGnfCkPR+dv8/HxkfRrcCp39uxZ/ec//6mwnDlzRhMnTlRwcHCltsOHDzv62u12lZWVydvbW6WlpXrzzTdlGIZ27NihEydOqGnTpo7QUv6/Z8+erTTSZLFYFBkZqY4dOzoWLy8veXic+ytu9+7dWrly5QW/h1WrVumtt95So0aNdP/996tVq1Zq1aqV/P391axZM8d6RESEWrRooQULFjj6Wq1WWSwWeXt7y2q16sMPP1RoaKgGDBggScrLy9OyZcv0t7/9Tc8++6w2bNjwu3WcPXtWU6dOVUJCgnr27OnYPm7cODVr1kwPPPCASktLK/UbO3asGjduLG9vb8eI2G233SZJuvnmmyuNlnl4eMjb21sBAQG1dlkSqIs83V0AAPcqDws13X/fvn1q3759tfvfddddWrFihSTp9ddf17p169SiRQt5e3vrb3/7m6655hp99913Onr0qCwWi6Nf48aNHX9+9913NXLkSMe6YRg6e/ZshV/ohmHIMAxJ54LK740CSdL333+v+++/X9dcc422bdumwMBAR1tISIhmzZpV4fPOV1ZWpl9++UUeHh6O7+aee+5RSkqK4/P/+te/6rrrrtPEiRNlt9sVHx+vd999V3fddVel402ZMkX79u3TqlWrKmz39vbW4sWLdfPNN+uhhx7SokWLKpzT9OnTNWnSJPn4+Mjb21v/+7//qyeeeELr1q3T1VdfrU8//VS33367/P39K31mdUb5gPqKIASYXHnYOP+XYVlZWaVtv6d8hOjAgQNq1arVBfft3LlzhUtcBw4cUGRkpIqLi2W1WjV06FClpKRoz549eumll3T//ffr+++/V58+fbRv3z75+fnp7NmzFYJKaWmpysrK1K9fv0qfV50JwhkZGbr11lvl6+ur1atXVzj2+QzDUFlZmYqLi2UYhho0aCBJys7OVufOndWoUSO1adNGhmGotLRUQUFB6tixo6ZOnap58+Zp4cKFuu+++7R48WIdPnxYd999twYOHKgVK1Y4jvXll19q1qxZeuWVVxQVFVWphm7duik1NVX33nuvjhw5otTUVDVt2lSS1Lx5c8d+NptNL774osaNG6devXrp+++/19NPP62EhATH/gDOIQgBJlc+anH+aMrq1asVHx9fYVtJSUmly2LSr5fWquv8UYwffvhB8fHxysjIkHTu8s+OHTt0zz336IMPPlDTpk117NgxSdLVV1+tRo0aVTqeh4eH4w61Rx99VLfccouGDx/u6HMxERERSkpKUt++fTVy5Eht2bKlwqhXaWmpHnzwQT344IOO7+rWW2/VF198IUm6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QF3EiBAAADAtghAAADAtghAAADAtghAAADAttwShcePGyWKxOJaoqChJUkZGhmJiYhQUFKSkpCQZhuHo44o2AABgbm4JQtu3b9fHH3+s/Px85efn67vvvpPdbld8fLy6du2qtLQ0ZWZmKiUlRZJc0gYAAFDrQaikpEQZGRmKi4tTYGCgAgMD1bhxY61du1Y2m01z5sxRmzZtNH36dC1atEiSXNIGAABQ60Fo165dMgxDnTt3VoMGDdS/f38dPHhQ6enpio2NlZ+fnyQpOjpamZmZkuSSNgAAgFoPQllZWerQoYOWLVumzMxMeXl5afTo0SooKFBkZKRjP4vFIqvVqvz8fJe0VcVut6ugoKDCAgAA6q9aD0IjRozQtm3bFBMTo8jISL355pv67LPPVFZWJh8fnwr7+vr6qqioSJ6enk5vq8qMGTMUEBDgWMLDw51wxgAAoK5y++3zgYGBKisrU9OmTZWXl1ehrbCwUN7e3goODnZ6W1UmTJggm83mWHJzc51whgAAoK6q9SCUmJioFStWONa//fZbeXh4qFOnTtq2bZtje05Ojux2u4KDgxUTE+P0tqr4+PjI39+/wgIAAOqvWg9CnTt31qRJk/TVV19p/fr1GjdunEaOHKm+ffvKZrMpNTVVkjRz5kz16dNHVqtVcXFxTm8DAACo9bfP33///crKytLgwYPVuHFj3XHHHZo+fbo8PT2VnJys4cOHKykpSaWlpdq4ceO5Il3QBgAAYDHq2KOWDx8+rLS0NPXo0UNNmjRxeduFFBQUKCAgQDabzWmXyQ5O61TjvhFTdjulBuC36vN/l/X53ABU7VJ+f9f6iNDFhIWFKSwsrNbaAACAebn9rjEAAAB3IQgBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTcloQMgxDpaWlzjocAACAy9UoCI0dO1Z2u73CtvXr16t9+/ZOKQoAAKA21CgILViwoFIQ6tChgw4ePOiUogAAAGqD56XsnJqaKuncZbClS5fKz8/Psf7F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UUpKilatWqXg4GDl5eVV2KewsFDe3t4uaauKj4+P/P39KywAAKD+qvUgtH79eiUlJTnWPT3PTVNq166dtm3b5tiek5Mju92u4OBgxcTEOL0NAACg1oNQu3bttGDBAiUnJys3N1fPPvus+vbtqwEDBshmsyk1NVWSNHPmTPXp00dWq1VxcXFObwMAAKj1u8aaN2+uf/7zn3r66af15z//Wf369dN7770nT09PJScna/jw4UpKSlJpaak2btx4rkgXtAEAANR6EJKkfv36VXkbe0JCgrKzs5WWlqYePXqoSZMmLm0DAADm5pYgdCFhYWEKCwurtTYAAGBevH0eAACYFkEIAACYVp27NAYAqJ6D0zrVuG/ElN1OrAS4cjEiBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIuXrgIA6hxeKIvawogQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLW6fB4Df0fONnjXqt3ncZidXAsBVGBECAACmRRACAACmRRACAACmRRACAACmxWTpK0hNJ25KTN4EAKAqjAgBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTcksQWrVqlVq3bi1PT0/ddNNNysrKkiRlZGQoJiZGQUFBSkpKkmEYjj6uaAMAAOZW60Fo3759GjVqlGbOnKnDhw+rZcuWevjhh2W32xUfH6+uXbsqLS1NmZmZSklJkSSXtAEAANR6EMrKytL06dN19913KzQ0VI899pjS0tK0du1a2Ww2zZkzR23atNH06dO1aNEiSXJJGwAAQK2/YmPgwIEV1n/44QdFRUUpPT1dsbGx8vPzkyRFR0crMzNTklzSVhW73S673e5YLygocMYpAwCAOsqtk6XPnj2rWbNmaezYsSooKFBkZKSjzWKxyGq1Kj8/3yVtVZkxY4YCAgIcS3h4uAvOGgAA1BVuDUKTJ09Wo0aN9Oijj8rT01M+Pj4V2n19fVVUVOSStqpMmDBBNpvNseTm5jrhLAEAQF3ltiD0+eefa/78+Vq6dKm8vLwUHBysvLy8CvsUFhbK29vbJW1V8fHxkb+/f4UFAADUX24JQvv379eIESM0b948tW/fXpIUExOjbdu2OfbJ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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'age_range', order = [-1,1,2,3,4,5,6,7,8],hue= 'gender',data = user_info)\n",
    "plt.title('用户性别年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "user_info['age_range'].replace(-1,np.nan,inplace=True)\n",
    "user_info['gender'].replace(-1,np.nan,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#user_info = user_info.dropna()\n",
    "#user_info.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '用户性别年龄分布')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHDCAYAAADIo3XgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA91klEQVR4nO3deVxWdf7//+fFxSbKGoaKoLiUuZBmFNo3bMzUSVFyWlzKtE1btLLhM7lUTjVqqWTbaCSFNC45NY6NaZuaWUoTLijBJC4kbolGFxh6yXJ+f/jjSgI3vC4u5Dzut9u5jee8z3lfr3PZdD17n/c5x2IYhiEAAAAT8nB3AQAAAO5CEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKZFEAIAAKZFEALgdKWlpcrNzT3v/U+cOKETJ064sKLfZGZm6s033zxj+2effaZt27Y5/XNLSkpks9nOe3+73e74s2EY+uqrry7o+EpvvPGGZsyYoZMnT17wsYAZEIQAk/vkk09ksVjOe3n//ffP2eekSZPUp08flZaWnlcN9957r+6+++4a2/773/+qWbNmKigoqLG9rKzsjLUmJydX23/Lli2aMWNGjX0VFxfr7rvv1u23367i4uLzql2SysvLlZqaqpKSEr3yyiu6/fbbq+2zfPlyhYaG6sCBA+fsr6KiQtddd51mzpwp6VSIGjJkiP7+97+fd02VXn/9da1du1be3t4XfCxgBgQhwOS8vLwkScePH3cs//rXv6ptO3bsmCTJ19f3nH0++uijys/P1wcffHBeNXh7e1f5od61a5eio6N16NAhWa1W/fTTT2f8Iff09JSHh4feeecdbd++3bG0aNHCUevKlSs1bdo0x/5Wq7XGviZNmqSCggLNmTNHFotFx44dq7YUFhbq8OHDju+j0ujRo1VSUiKLxSJfX1+dPHlSJSUljvYvvvhCZWVl5/WdfPjhh9q2bZt69uwpSWrcuLEmTpyol156Sfn5+TUeU1JSomPHjlUJn1988YV27NihZ555ptr+hmGotLRURUVF56wHaMgIQoDJeXp6SjoVcCqXynB0+jYfHx9JvwWnSidPntT//ve/KsuJEyc0adIkhYSEVGvbv3+/41i73a6Kigp5e3urvLxcb7zxhgzD0ObNm3XkyBE1a9bMEVoq//fkyZPVRposFouioqLUuXNnx+Ll5SUPj1P/itu+fbuWLVt21u9h+fLlevPNN9WkSRONHDlSrVu3VuvWrRUQEKDmzZs71iMjI9WyZUu99dZbjmOtVqssFou8vb1ltVr14YcfKiwsTAMGDJAkFRQUaPHixfrb3/6mp59+WmvXrj1jHSdPntTUqVOVkJCgG264wbF93Lhxat68ue69916Vl5dXO+6RRx6Rv7+/vL29HSNit9xyiyTpxhtvrDZa5uHhIW9vbwUGBtbZZUmgPvJ0dwEA3KsyLNR2/127dqljx47nffwdd9yhpUuXSpJee+01rV69Wi1btpS3t7f+9re/6YorrtCWLVt08OBBWSwWx3H+/v6OP7/77rsaNWqUY90wDJ08ebLKD7phGDIMQ9KpoHKmUSBJ+v777zVy5EhdccUVSk9PV1BQkKMtNDRUs2bNqvJ5p6uoqNCvv/4qDw8Px3dz1113KTU11fH5f/3rX3XVVVdp0qRJstvtio+P17vvvqs77rijWn/PPvusdu3apeXLl1fZ7u3trQULFujGG2/U/fffr5SUlCrnNG3aNE2ePFk+Pj7y9vbWv//9bz322GNavXq1Lr/8cn366ae69dZbFRAQUO0zz2eUD2ioCEKAyVWGjdN/DCsqKqptO5PKEaI9e/aodevWZ923a9euVS5x7dmzR1FRUSotLZXVatXQoUOVmpqqHTt26KWXXtLIkSP1/fffq0+fPtq1a5f8/Px08uTJKkGlvLxcFRUV6tevX7XPO58JwllZWbr55pvl6+urFStWVOn7dIZhqKKiQqWlpTIMQ40aNZIk5ebmqmvXrmrSpInatm0rwzBUXl6u4OBgde7cWVOnTtXcuXM1f/583XPPPVqwYIH279+vO++8UwMHDtTSpUsdfX355ZeaNWuWZs6cqXbt2lWr4brrrlNaWpruvvtuHThwQGlpaWrWrJkkqUWLFo79bDabXnzxRY0bN069evXS999/ryeffFIJCQmO/QGcQhACTK5y1OL00ZQVK1YoPj6+yraysrJql8Wk3y6tna/TRzF++OEHxcfHKysrS9Kpyz+bN2/WXXfdpQ8++EDNmjXToUOHJEmXX365mjRpUq0/Dw8Pxx1qDz30kG666SYNHz7cccy5REZGKjExUX379tWoUaO0YcOGKqNe5eXluu+++3Tfffc5vqubb75ZX3zxhSTpyiuv1PHjxx37b9q0SV27dnXMberQoYPGjBmjIUOG6PHHH9eKFSs0f/58tW/fXpIcISgzM1NDhgxRXFycBgwYoL1799Y4WnfDDTcoOTlZTz75pDp27Kg5c+Zo5MiRVeodPny4QkJCNH36dEm/hdXKy5sAfkMQAkyucvSntiqDTeVk3XN9VuUIlGEY2rRpkyZOnOgIQm3atNGyZcv0//7f/zvn6FIli8XiGD3Zu3evrFZrjaMpZxIQEKA///nPkk4FhUmTJunFF190tP/+0lhpaWm17+zLL79Ufn6+7rnnHo0ZM0YjR45UfHy8tm3bptdee01Dhw6Vl5eXxowZo82bN2vQoEH6y1/+4jj++PHjSkhIULt27TR8+HBdeeWVZ635hhtu0Hfffad77rlHnTp1cmw3DEMPP/ywVq5cKem3kFXp9FEjSRoxYoT+8Y9/nOc3BTRMBCHA5ConHp8eYipHgk7fVtMEXem3592c/oN8Nl27dpV06kd7yZIluu6667RkyRJH+1NPPaWhQ4cqIyNDfn5+ysvLkyTt2LFDPj4+KikpUefOnR0/8n/6059ktVrl4eGhw4cPa9myZdq+fbujv+eee+686pJ01nlElWoaFfvuu++UkZGhO+64Q9u3b1f//v2VkZGhmTNnatGiRZo3b568vLzUqlUreXp6at68efLx8dHo0aMlnQosq1evVlBQkBo1aqTbbrtNkhQWFqa33npLd911l+Ozbr/9doWGhqp9+/ZKT093bLfb7br//vv1z3/+UwMHDtTevXv18ccfS5Ly8vJ04403avPmzWratKkkafz48YwQASIIAaZXeYv36ZORK9W07feOHj0qSdq4caNatmx51n2HDRumsrIySacuafXv37/G/f73v//p1ltvVePGjR2Xo/r27avy8nL9+uuv2r59u2PUJDIy0nELfXFxsdq0aeMYTZo5c6YmTJhw1ppKSkrk4eFR5S6zcykrK9PJkyfl5eUlLy8vWa1W+fr66quvvtLJkye1YsUKtWnTRr6+vjp+/LgOHDjgCFmGYWj27Nl6/PHHq/TZpk0bx58bNWqkrKwslZeXq3v37lUuCf7000+65pprqtVz8803a9OmTfrwww+1c+dO/eMf/3D8fVQG2+bNmzvmCPn5+dUY6gCzIQgBJnfo0CFddtllOnLkiGNb5RyhyhAinXmO0IEDB+Tt7a1rr732nPOFHn300fMahbj55psdI01bt25Vt27dlJeXV+McoVdeeUXSqbvXXn75ZT3//PPq0KGDDMPQSy+9JC8vL5WWljoC2O/17t1b3377rSwWi7y8vBwTlivZ7XY9+OCDGjt2rGNbRUWFysrKHBOXPTw85OnpqUWLFunhhx/Wiy++qBdffFEeHh7q0qWLY66OJC1ZskTBwcGaMmXKWb+D5cuX67LLLlN0dHSV7fv27VNERESVbZ6ennr55ZdVVlamuLg4zZkz56x9A/gNQQgwuZycnPO+rFWTjRs3qkuXLuc1aXro0KG1/pxzWbZsmUJCQhyTkCsnMDdu3Fh2u/2Mz8pZv36949JaTc50+/zpt+cbhqGdO3fqv//9r3744QedOHFC3333nWPfxx57TFdeeaXuu+8+Pf3005o+ffpZR9sOHz6sOXPmaNSoUVXqstvtOnr0aLUgJMnx8MXKes7lYueGAQ0FD1QETG716tXq1atXrY6tqKjQBx98oPj4eCdXdWF2796t6dOn64EHHnBcgjo9CE2dOtUxIfv3LuSS2OkqH0oonfoewsLClJKSosjISL311lsaMmSII5A8+uijmj17tq6//no1a9ZM99577xn7PXDggPr16yc/P79qo0a5ubkyDKPGIHS6099T9ntffvmlJk2apM8//9wxXwgwM0aEABPLyMjQ9u3bq905VDkxuqKiQh4eHiovL9e+ffskqcpzgN555x3t379fY8aMuag6Th9dKSws1K+//iofHx9ZLBb98ssvkk7NRTpx4oRjfk5kZKSkU5fOBg8erKZNm2ry5MkqLy+XzWbTF198IYvFosDAwCqftWvXrgu65b+8vPycIyxlZWXas2ePNm3apOXLl2vfvn3atWuX4+61q666Shs3btQtt9yiK664QoZhVHlYZGUfixYt0uTJk+Xh4aHPPvvM8Uyj9PR0rVq1SitXrlRgYKA6dOhw1noMw6hyCbJy9McwDPn6+uq1117TDTfccNF/b0CDYAAwrX79+hkxMTHVtr///vuGJKOkpMQwDMMYP368IckICwszCgsLDcMwjKysLMPf39946KGHLrqOESNGGEOHDjUMwzCee+45Q5Lh5eVl+Pj4VFs8PDyMxo0bG4ZhGFu3bjW8vLyMq666ysjPzzcMwzAKCgoMHx8fQ5IxbNgwx2esWrXKaNKkiSHJuP32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JydH8+bN0759+/Taa69p69at6tu3r2w2m9LS0iRJM2bMUJ8+fWS1WhUXF+f0NgAAAIvhhicMpqen66mnntKWLVvUrFkzJSUlKSEhQf/+9781fPhw+fv7q7y8XOvWrVOnTp0kySVt51JUVKTAwEDZbDZGh1DvdU9Mc0m/m2aOdEm/AOAqF/L77ZYgdDb79+9XRkaGevbsqaZNm7q87WwIQriUEIQA4JQL+f32rKOazlt4eLjCw8PrrA0AAJgXL10FAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACmRRACAACm5enuAgDgXLonprmk300zR7qkXwCXDkaEAACAaRGEAACAaRGEAACAaRGEAACAabklCI0bN04Wi8WxtGvXTpKUlZWlmJgYBQcHKzExUYZhOI5xRRsAADA3twShTZs26eOPP1ZhYaEKCwu1ZcsW2e12xcfHq3v37srIyFB2drZSU1MlySVtAAAAdR6EysrKlJWVpbi4OAUFBSkoKEj+/v5atWqVbDabkpKS1LZtW02bNk0pKSmS5JI2AACAOg9C27Ztk2EY6tq1qxo1aqT+/ftr7969yszMVGxsrPz8/CRJ0dHRys7OliSXtAEAANR5EMrJyVGnTp20ePFiZWdny8vLS2PGjFFRUZGioqIc+1ksFlmtVhUWFrqkrSZ2u11FRUVVFgAA0HDVeRAaMWKE0tPTFRMTo6ioKL3xxhv67LPPVFFRIR8fnyr7+vr6qqSkRJ6enk5vq8n06dMVGBjoWCIiIpxwxgAAoL5y++3zQUFBqqioULNmzVRQUFClrbi4WN7e3goJCXF6W00mTpwom83mWPLz851whgAAoL6q8yA0YcIELV261LH+3XffycPDQ126dFF6erpje15enux2u0JCQhQTE+P0tpr4+PgoICCgygIAABquOg9CXbt21eTJk/XVV19pzZo1GjdunEaNGqW+ffvKZrMpLe3UyxVnzJihPn36yGq1Ki4uzultAAAAdf72+ZEjRyonJ0eDBw+Wv7+/brvtNk2bNk2enp5KTk7W8OHDlZiYqPLycq1bt+5UkS5oAwAAsBj17FHL+/fvV0ZGhnr27KmmTZu6vO1sioqKFBgYKJvNxmUy1HvdE9Nc0u+mmSNd0u+FaMjnBsD5LuT3u85HhM4lPDxc4eHhddYGAADMy+13jQEAALgLQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJgWQQgAAJiW04KQYRgqLy93VncAAAAuV6sg9Mgjj8hut1fZtmbNGnXs2NEpRQEAANSFWgWht956q1oQ6tSpk/bu3euUogAAAOqC54XsnJaWJunUZbBFixbJz8/Psf7FF1/o2muvdX6FAAAALnJBQejdd9+VJFksFi1cuFCenqcO9/DwULt27bR48WLnVwgAAOAiFxSE1q5dK+lU8Pn4448VEBDgkqIAAADqQq3mCI0ZM0Y+Pj7OrgUAAKBOXdCIUKW5c+fKbrcrPz9fhmFUaYuMjHRKYQAAAK5WqxGhN954Q0FBQWrdunWVJSoq6oL76t+/v1JTUyVJWVlZiomJUXBwsBITE6uELFe0AQAAc6tVEHr22Wf18ssv68SJE6qoqHAsF/pAxYULF+rTTz+VJNntdsXHx6t79+7KyMhQdna2IyC5og0AAKBWQSggIEA333yzvLy8av3BP//8s5566ildeeWVkqRVq1bJZrMpKSlJbdu21bRp05SSkuKyNgAAgFoFoddff10PPfSQsrKyav3BTz31lG677TbFxsZKkjIzMxUbG+t4NlF0dLSys7Nd1lYTu92uoqKiKgsAAGi4ahWExo8fr23btunqq69WaGio2rRp41jOx9q1a7V69Wq99NJLjm1FRUVV5hhZLBZZrVYVFha6pK0m06dPV2BgoGOJiIg47+8EAABcemp119jFzLM5ceKExowZo7lz51Z5DpGnp2e1W/J9fX1VUlLikrbg4OBqtU2cOFETJkxwrBcVFRGGAABowGoVhGpzd1ilF154QTExMRowYECV7SEhIdUutRUXF8vb29slbTXx8fHh+UgAAJhIrYJQ69atZbFYHLeiWywWR9u57hxbtGiRCgoKFBQUJEkqKSnR0qVL1bp1a5WWljr2y8vLk91uV0hIiGJiYjR//nyntgEAANRqjlDlrfIVFRX69ddftXbtWt10001avXr1OY9dv369srKytHXrVm3dulWDBg3S888/r6+++ko2m83xYtcZM2aoT58+slqtiouLc3obAABArUaETteoUSPFxcXpo48+UlxcnDZt2nTW/Vu2bFllvUmTJgoNDVVoaKiSk5M1fPhwJSYmqry8XOvWrTtVpKen09sAAAAuOghVOnz4sA4ePHjBx50+8TohIUG5ubnKyMhQz5491bRpU5e2AQAAc6v1ZOnfzws6ePCgnnjiiYsuKDw8XOHh4XXWBgAAzMspt89bLBa1bNnyvJ8jBAAAUB/UarJ0r1691KtXLzVq1EhHjhxRo0aNCEEAAOCSU6sRof3792vw4MHKzc1VixYtdODAAV1xxRVavny5WrRo4ewaAQAAXKJWI0JjxozRtddeq4KCAuXk5Oinn37SNddcowcffNDZ9QEAALhMrUaEvv76a23fvt3xhGZfX19NnjxZ0dHRTi0OAADAlWo1ItSlSxctWLCgyrYFCxaoc+fOTikKAACgLtRqRGju3Lnq16+fFi5cqKioKO3evVvFxcX67LPPnF0fAACAy9QqCHXu3Fk7duzQf/7zH+Xn52vUqFEaMGCAGjdu7Oz6AAAAXKZWl8ays7N14403ymq1KjExUS+88IKuv/567dixw9n1AQAAuEyt7xrr3bu3+vbtK0lKT0/XwIEDNXbsWKcWBwAA4Eq1ujS2detWLV26VIGBgZKkxo0ba9y4cerYsaNTiwMAAHClWt819t5771XZ9t5776lTp05OKQoAAKAu1GpE6M0339Qf//hHLViwQK1bt9aePXtUWFioTz75xNn1AQAAuEytglC3bt2Um5urFStWaN++fbrnnns0YMAA+fv7O7s+AAAAl6lVEJIkf39/DRs2zJm1AAAA1KlazRECAABoCAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtAhCAADAtGr9HCHgUtQ9Mc0l/W6aOdIl/QIAXIsRIQAAYFqMCAE4q73Pd3FJv5HPbndJvwBwIRgRAgAApkUQAgAApkUQAgAApkUQAgAApkUQAgAA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mjXasmWLbDab3nzzTd1yyy3uLsuBIOQGCQkJVZJ/5fLGG280iPT/ew3xnH7v5MmTmjVrlh555BF3l+JUmZmZCgsL02effaY5c+a4uxynWbt2rVavXq2XXnrJ3aU4VU5Ojjp16qTFixcrOztbXl5eGjNmjLvLcppjx45pypQpat++vfbt26ekpCTFxcXpxIkT7i7NqRYtWqTY2Fi1bt3a3aU4RceOHXX77bfrmmuuUVBQkL799lvNmjXL3WX9xt3X5szo0KFDxp49e6otNpvNsY8a2Hwaw2iY51QpMTHRuPrqq42TJ0+6uxSnqqioMDZv3mz07t3bSEhIcHc5TnH8+HGjffv2xooVKwzDMIx77723Qc0ROl1eXp7h4eFR5d8tl7IFCxYYfn5+xtGjRw3DMIzS0lKjQ4cOxltvveXmypwrJibGWLlypbvLcJqNGzcaLVq0ML799lujuLjYmDRpknHttdcaFRUV7i7NMAzDMMWTpeubsLAwd5cAJ/r88881b948paeny8vLy93lOJXFYlG3bt2UmpqqVq1aqbCwUMHBwe4u66K88MILiomJ0YABA9xdissFBQWpoqJCBw8ebBAv8Ny3b5+uv/56x0uzPT09FR0drT179ri5MufZuXOndu7cqT59+ri7FKd5//33NXToUF133XWSpBdffFHz5s1TZmamunbt6t7ixKUx4KLs3r1bI0aM0Ny5c9WxY0d3l+M0a9asUWJiomPd0/PUfzN5eFz6/8pYtGiRli9f7rgkvWjRIj3yyCMN4rLmhAkTtHTpUsf6d999Jw8PD0VERLixKueJiIjQ8ePHq2z78ccf1apVKzdV5HxLly7VwIEDG9R/VJWVlemnn35yrBcXF+vXX39VeXm5G6v6DSNCQC0dP35cAwcOVEJCggYPHqxjx45Jkho3biyLxeLm6i5Ohw4dlJCQoPbt2+uPf/yjpkyZor59+yowMNDdpV209evXq6yszLH+5z//WbGxsRo1apT7inKSrl27avLkyWrWrJnKyso0btw4jRo1Sn5+fu4uzSkGDBigcePGad68eRo4cKD+9a9/aevWrerfv7+7S3OaTz75RKNHj3Z3GU51ww036L777tMrr7yisLAwzZ8/X2FhYYqOjnZ3aae4+9ocaqYGOJ+moZ3TsmXLDEnVloZyjp988olx1VVXGf7+/sbtt99uHD582N0luURDmyP09NNPG0FBQUZERIQxfvx449ixY+4uyak2btxo9OzZ02jUqJERFRVlLFu2zN0lOU1JSYnh7e1t5OTkuLsUp6qoqDCmTp1qREZGGl5eXka3bt2MjIwMd5flwEtXAQCAaV36F/wBAABqiSAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEoF5Yv369unbtKj8/P8XExCgrK0uStG3bNnXu3FmhoaGaMGGCOnTooNdff13SqRdUdunSRUFBQXrggQdkt9vP67Nat26tL774QpMmTVKzZs2UmZnpaJs3b54iIiLk7++vhIQEFRcXS5KmTp2qUaNG6fnnn1dQUJBatWql9evXO45bvHixmjVrpvbt2ysxMVGXX365MjMzZRiGZs6cqVatWql58+Z69dVXnfWVAXAGN7/rDACM8vJy4/LLLzdefPFF4+DBg8b48eON/v37G4ZhGD169DCmTZtmZGZmGgEBAcaGDRuMn3/+2di5c6fh7e1tpKSkGDt37jS6du1qvPDCC+f1ea1atTJiY2ONe++911izZo1RXFxsGIZhbNu2zbBarcbnn39u5OfnGz169DBmzJhhGIZhPPfcc0bTpk2Ne+65x9i1a5cxbNgw48YbbzQMwzAKCwuNJk2aGGvXrjXee+89IywszDh48KBx/PhxIy0tzQgODjY2bNhgbNiwwWjSpImxfv16F3yLAGqDESEA9UJmZqYmTJigH3/8UcXFxdqxY4ckaevWrfrTn/6k6OhodezYUXl5eQoODtbixYvVrVs33XfffWrbtq3Gjh2rjz766Lw/LzAwUKmpqfrDH/6gJk2aSJLat2+vQ4cOKSYmRjk5OTIMw1GHJFmtViUnJ6tNmzYaNWqU8vPzJUk7duyQv7+/brrpJt1xxx366aefZBiGfH19tWDBAj300EPq0aOHevTooYEDB15QnQBcy9PdBQCAh4eHkpKSNH/+fLVp00atWrVSeXm5JKldu3bauHGjQkNDlZubq44dO0qS9u/fr82bNysoKEiSVFZW5gg052PcuHHVth0/flwPPPCA1q1bp27dusnT09NRhyT16NFDvr6+kiRvb28ZhiFJatWqlQoLC7Vr1y7t27dPISEhCgsLc9S5YcMGzZs3T5J04sQJJSQkXNgXBMBlCEIA3O7LL7/U3LlztXPnToWFhWnlypXatGmTJKlTp04aP368HnzwQT322GO6+uqrJUktW7bUoEGDNGvWLElSeXm5SkpKzvszGzduXG3bq6++qoKCAv3000/y9vbW//3f/+nw4cOO9oCAgBr78vX1VYcOHdSpUydZrVa9++678vDwcNR5//336/bbb5ck2e12eXt7n3edAFyLS2MA3O7YsWOSJJvNpm+++UYTJkyQYRjavXu3vvrqK33zzTfatWuXkpKSHMcMGzZM69evV25urqRTIWb06NEXXYdhGDpy5IgWLVqkuXPnOkZ9zubDDz9UeHi4tmzZovz8fN15552OtnvvvVeLFy9WcXGxSkpK9NBDD+nNN9+8qDoBOA9BCIDb9e/fX4MGDdI111yjsWPH6sEHH9SBAwfUuHFjhYWFqVevXoqKilKjRo00duxYSVKbNm20YMECTZgwQZ06dVJWVpYWL158UXU8/vjjMgxDV1xxhd59913df//92rp16zmPu+WWW/TNN9+oZ8+eCg0NVWhoqObPny9JGjFihO666y4NGDBAPXv2VFRUlJ5//vmLqhOA81iM8/nPHQBwg5SUFC1dulTz58+Xn5+fMjMzdeutt+rw4cNnvEzlDvfcc49atWqlcePGyWKxKC0tTYsXL3Zc3gNQfzEiBKDe6t27t8rKytS5c2c1b95cDz/8sGbPnn3WEPT1118rKCioxmXChAkuqXPEiBH6z3/+o6ioKLVu3VoffPCBZs+e7ZLPAuBcjAgBaFBOnDihQ4cO1djm7++vyy67rI4rAlCfEYQAAIBpcWkMAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACYFkEIAACY1v8HCLCEzMiIRNIAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'age_range', order = [-1,1,2,3,4,5,6,7,8],hue= 'gender',data = user_info)\n",
    "plt.title('用户性别年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>brand_id</th>\n",
       "      <th>time_stamp</th>\n",
       "      <th>action_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>328862</td>\n",
       "      <td>323294</td>\n",
       "      <td>833</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>328862</td>\n",
       "      <td>844400</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>328862</td>\n",
       "      <td>575153</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>328862</td>\n",
       "      <td>996875</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>328862</td>\n",
       "      <td>1086186</td>\n",
       "      <td>1271</td>\n",
       "      <td>1253</td>\n",
       "      <td>1049.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  cat_id  seller_id  brand_id  time_stamp  action_type\n",
       "0   328862   323294     833       2882    2661.0         829            0\n",
       "1   328862   844400    1271       2882    2661.0         829            0\n",
       "2   328862   575153    1271       2882    2661.0         829            0\n",
       "3   328862   996875    1271       2882    2661.0         829            0\n",
       "4   328862  1086186    1271       1253    1049.0         829            0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id            0\n",
       "item_id            0\n",
       "cat_id             0\n",
       "seller_id          0\n",
       "brand_id       91015\n",
       "time_stamp         0\n",
       "action_type        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log.isnull().sum(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id            0\n",
       "item_id            0\n",
       "cat_id             0\n",
       "seller_id          0\n",
       "brand_id       91015\n",
       "time_stamp         0\n",
       "action_type        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#user_log = user_log.dropna()\n",
    "user_log.isnull().sum(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 54925330 entries, 0 to 54925329\n",
      "Data columns (total 7 columns):\n",
      " #   Column       Dtype  \n",
      "---  ------       -----  \n",
      " 0   user_id      int64  \n",
      " 1   item_id      int64  \n",
      " 2   cat_id       int64  \n",
      " 3   seller_id    int64  \n",
      " 4   brand_id     float64\n",
      " 5   time_stamp   int64  \n",
      " 6   action_type  int64  \n",
      "dtypes: float64(1), int64(6)\n",
      "memory usage: 2.9 GB\n"
     ]
    }
   ],
   "source": [
    "user_log.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "初步可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label\n",
       "0    34176         3906      0\n",
       "1    34176          121      0\n",
       "2    34176         4356      1\n",
       "3    34176         2217      0\n",
       "4   230784         4818      0\n",
       "5   362112         2618      0\n",
       "6    34944         2051      0\n",
       "7   231552         3828      1\n",
       "8   231552         2124      0\n",
       "9   232320         1168      0"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 260864 entries, 0 to 260863\n",
      "Data columns (total 3 columns):\n",
      " #   Column       Non-Null Count   Dtype\n",
      "---  ------       --------------   -----\n",
      " 0   user_id      260864 non-null  int64\n",
      " 1   merchant_id  260864 non-null  int64\n",
      " 2   label        260864 non-null  int64\n",
      "dtypes: int64(3)\n",
      "memory usage: 6.0 MB\n"
     ]
    }
   ],
   "source": [
    "df_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "user_log['time_stamp'].hist(bins = 9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='action_type', ylabel='count'>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAG7CAYAAAD33l5GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAdyElEQVR4nO3de5DV9X3/8deBhQUEFqxOOshyk1gjRE2USLQlsbEGCwbMNIbqmNEm8VJDrVpqaLTRpiO0tYkTTfHSjqijYXTaKGqjidefJsMojqIEvERuK9gKBHeXAKvC/v6w7pSiCOvuOR/cx2Pm/PE957vnvNmj7JPP9/s9W2lvb28PAEABetV6AACAdwkTAKAYwgQAKIYwAQCKIUwAgGIIEwCgGMIEACiGMAEAiiFMAIBi7LNhsnHjxowePTqrVq36wH0vv/zyVCqVXW6PPvpot88JAOy5yr74kfQbNmzIySefnEWLFmXlypUZNWrUbvfftm1btm3b1rG9Zs2anHDCCXn55ZfT0NDQzdMCAHtqn1wxmTFjRmbMmLHH+/fr1y9DhgzpuF177bW58MILRQkAFGafXDFZsWJFxowZk0qlstOKyVNPPZVvfetbeeGFF/KFL3whN9100y7xsW7duhxxxBFZuXJlBg4cWIPpAYD3s0+umIwZM2aX+954442cdNJJmTJlSp5//vls2bIlF1988S77XXfddTnttNNECQAUqK7WA3SVe++9N3369Mlll12WSqWSCy+8MGecccZO+2zfvj033nhjHn744RpNCQDszkcmTNauXZv169dn6NChSZIdO3aktbU127ZtS79+/ZIkjzzySA444IB84hOfqOWoAMD7+MiEyfDhw3P00UdnwYIFSZL29vY0NzenT58+HfvccccdOeWUU2o1IgDwAfbJc0zey5QpU7J69eo8+eST6d27dxYsWJDJkyfnf5/be//99+f444+v4ZQAwO58ZFZMhgwZkoULF+Zb3/pWli5dmnHjxmXhwoWpq3vnj/jKK69k3bp1mTBhQo0nBQDezz55uTAA8NH0kTmUAwDs+4QJAFCMfeockx07dmTdunUZNGhQKpVKrccBAPZAe3t7WltbM2zYsPTqtfs1kX0qTNatW5fGxsZajwEAdEJTU1OGDx++2332qTAZNGhQknf+YIMHD67xNADAnmhpaUljY2PHz/HdqUmY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hg0baj1KsYQJFGbjxo0ZPXp0Vq1aVetR6GZ33313xowZk7q6uhxzzDFZvnx5rUeiGy1YsCBjx47N+eefnxEjRmTBggW1HqlIwqRwS5cuzYQJEzJ06NDMmjVrjz7Ol33Xhg0bMnXqVFHSA7zyyis566yzMnfu3KxduzYjR47MN77xjVqPRTd54403MnPmzDz++ON55plncv311+eSSy6p9VhFEiYFa2try8knn5yjjjoqixcvzrJlyzJ//vxaj0U3mjFjRmbMmFHrMaiC5cuX58orr8ypp56aj33sYznvvPOyePHiWo9FN2ltbc3VV1+d8ePHJ0mOOOKIbNq0qcZTlclVOQW766678md/9md59dVXM2DAgCxZsiTnn39+nnjiiVqPRjdZsWJFxowZk0qlkpUrV2bUqFG1Hokque6663LNNdfkV7/6Va1HoZu99dZb+frXv55evXr5x+Z7qMnnmLBnlixZkokTJ2bAgAFJksMPPzzLli2r8VR0pzFjxtR6BGrgzTffzFVXXZULL7yw1qPQzZYsWZLjjz8+ffv2zQsvvFDrcYrkUE7BWlpaMnr06I7tSqWS3r17W/6Dj5hLL700AwcOzNlnn13rUehmhx9+eB566KGMGzcuZ511Vq3HKZIVk4LV1dXt8umA/fr1y5YtWzJ06NAaTQV0pZ///Oe57rrrsmjRovTp06fW49DNKpVKPvWpT2X+/PkZOXJkNm3a5O/z/8OKScH233//rF+/fqf7Wltb07dv3xpNBHSlFStW5PTTT8+8efNy2GGH1XocutHDDz+cWbNmdWzX1b2zLtCrlx/D/5fvSMEmTJiQRYsWdWyvWrUqbW1t2X///Ws4FdAVtm7dmqlTp2b69OmZNm1aNm/enM2bN/tIgI+oQw89NNdff31uuOGGNDU15dvf/nZOPPHENDQ01Hq04giTgk2aNCnNzc255ZZbkiRz587NCSeckN69e9d4MuDDeuCBB7J8+fLceOONGTRoUMdt9erVtR6NbjBs2LDceeedufrqqzNu3Lhs2bIlt956a63HKpLLhQt311135bTTTsugQYOyffv2PPbYYxk3blytxwKAbiFM9gFr167N4sWLc+yxx+bAAw+s9TgA0G2ECQBQDOeYAADFECYAQDGECQBQDGECABRDmAAAxRAmQJdZtWpVKpVKrccA9mHCBNgrn//85zN//vz3fGzEiBFV/e3Xu5sF2DcJE6DL9OrVK0OGDKn1GMA+TJhAD/X444/nyCOPzIABAzJhwoQsXbo0SfLMM8/ks5/9bAYOHJjjjjsuv/rVr5Ik5557biqVSh577LGcddZZqVQqOffcc3d6zvc7lLN06dL8/u//fhoaGvLHf/zHefXVV5Mkjz76aEaNGpWFCxdm5MiRGTp0aH74wx9+4Oy7m+XWW2/N+PHjO/bdvHlz+vXrlxdeeCHz58/PZz7zmUybNi0NDQ2ZPHlyXnvttY59n3rqqRxzzDFpaGjIl7/85TQ3N+/ldxX4sIQJ9EA7duzIn/zJn+QrX/lKVqxYkWOPPTazZs1KS0tLJk+enC996Ut58cUXM3HixJx++ulJkh/84AfZtGlTjjvuuPzoRz/Kpk2b8oMf/OADX2vz5s058cQT80d/9Ed57rnn0tjYmGnTpmXHjh1Jko0bN2bu3Lm57777csUVV2TWrFnZunXrbp9zd7NMmzYtv/71r/Piiy8mSX7605/m0EMPzaGHHprknfj47Gc/m2effTb19fUdQfPGG2/kpJNOypQpU/L8889ny5Ytufjiizv3DQY6ra7WAwC1sWTJkjQ0NOS5555La2trXnrppdx7773Zf//9M3v27CTJpZdems985jNJkv79+6d///6pq6vLgAED9viQzT333JNBgwblu9/9bpLkhz/8YQ488MA8+eSTSd4Jl3nz5mX8+PE55JBDcsEFF+T111/PyJEj3/c5dzfL4MGDM3ny5Pz7v/97/uZv/iZ33XVXvvrVr3Y8Pnz48FxyySWpVCq5/PLLM2HChLz99tu5995706dPn1x22WWpVCq58MILc8YZZ+zNtxToAlZMoAfq1atXvv/97+eggw7K+eefn+bm5mzfvj2vvvpqRo0a1bHf0KFDd/qh3hlNTU0ZPXp0x3Z9fX2GDRuWpqamjtc44ogjkiR9+/ZNknzYX+F16qmn5j/+4z/y1ltv5T//8z9z6qmndjw2fPjwjsNNBx10ULZv356NGzdm7dq1Wb9+fYYOHZohQ4bkK1/5StavX59t27Z9qFmAvSNMoAd69NFHM2/evCxfvjyLFy/O17/+9SRJY2NjVq5c2bHf5s2bM378+PzXf/1Xx329evXaq3AYMWLETs+5bdu2rFu3LiNGjEjyzgpHZ73fLF/60peybNmy3HTTTRk7dmwOPvjgjsfWrFnTcRhpzZo1qaurywEHHJDhw4fn6KOPzrPPPptnn302S5YsyTPPPJM+ffp0ej5g7wkT6IE2b96cJGlubs4vfvGLXHTRRWlvb8+UKVOyadOmXHnllXn11Vfz93//99m+fXs+9rGPdXzt2LFj8+CDD+a1117Lgw8+mO3bt+/2taZOnZrW1tZcccUVWb16dS644IJ8/OMfz4QJEz70n+P9Zhk4cGBOOumk/PVf//UuKz7r1q3LnDlzsnLlyvzd3/1dpk2blt69e2fKlClZvXp1nnzyyfTu3TsLFizI5MmTP/TqDbB3hAn0QO+e4PrpT3865557br75zW9m3bp12bp1a+6///7cc889+cQnPpFFixblJz/5yU5X2lx22WVZvXp1Ro8enfPOO69j9eH9DBw4MA888EB+9rOf5ZOf/GTWrFmTu+++O716ffi/fnY3y1e/+tW0tLTsdBgnSSZOnJhnnnkmRx55ZN58881ce+21SZIhQ4Zk4cKF+ed//ucceuih+clPfpKFCxemrs6peFBNlXb/HAA+YlasWJHHH388N954Y5544omO++fPn5/58+fn0Ucfrd1wwG75pwBQpPe76ueQQw7puKLn/UyfPj2vv/567rzzzm6YDOhOVkyAIq1ateo97+/Tp08OOuig6g4DVI0wAQCK4eRXAKAYwgQAKIYwAQCKIUwAgGIIEwCgGMIEACiGMAEAiiFMAIBi/H/udm3oGw0aRQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x = 'action_type', order = [0,1,2,3],data = user_log)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "特征化工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>306816</td>\n",
       "      <td>1489</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>176256</td>\n",
       "      <td>3323</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>307584</td>\n",
       "      <td>1340</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260747</th>\n",
       "      <td>208511</td>\n",
       "      <td>2592</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260793</th>\n",
       "      <td>87935</td>\n",
       "      <td>1964</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260794</th>\n",
       "      <td>87935</td>\n",
       "      <td>3734</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260799</th>\n",
       "      <td>350591</td>\n",
       "      <td>4394</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260842</th>\n",
       "      <td>422783</td>\n",
       "      <td>2026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>15952 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        user_id  merchant_id  label\n",
       "2         34176         4356      1\n",
       "7        231552         3828      1\n",
       "53       306816         1489      1\n",
       "57       176256         3323      1\n",
       "59       307584         1340      1\n",
       "...         ...          ...    ...\n",
       "260747   208511         2592      1\n",
       "260793    87935         1964      1\n",
       "260794    87935         3734      1\n",
       "260799   350591         4394      1\n",
       "260842   422783         2026      1\n",
       "\n",
       "[15952 rows x 3 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train[df_train['label'] == 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>brand_id</th>\n",
       "      <th>time_stamp</th>\n",
       "      <th>action_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>35905644</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1110</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905646</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1110</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905672</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1110</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905696</th>\n",
       "      <td>34176</td>\n",
       "      <td>718096</td>\n",
       "      <td>1142</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1031</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905720</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1031</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905791</th>\n",
       "      <td>34176</td>\n",
       "      <td>613698</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1021</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905804</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1108</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905824</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1029</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905830</th>\n",
       "      <td>34176</td>\n",
       "      <td>1093165</td>\n",
       "      <td>1397</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905831</th>\n",
       "      <td>34176</td>\n",
       "      <td>898580</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905832</th>\n",
       "      <td>34176</td>\n",
       "      <td>569051</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905834</th>\n",
       "      <td>34176</td>\n",
       "      <td>185202</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905876</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905886</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905895</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905900</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1111</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905960</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1107</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905966</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1107</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905995</th>\n",
       "      <td>34176</td>\n",
       "      <td>965699</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905996</th>\n",
       "      <td>34176</td>\n",
       "      <td>187402</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35905999</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906001</th>\n",
       "      <td>34176</td>\n",
       "      <td>569051</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906005</th>\n",
       "      <td>34176</td>\n",
       "      <td>702940</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906007</th>\n",
       "      <td>34176</td>\n",
       "      <td>832131</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906008</th>\n",
       "      <td>34176</td>\n",
       "      <td>48054</td>\n",
       "      <td>302</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906009</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906011</th>\n",
       "      <td>34176</td>\n",
       "      <td>320263</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906012</th>\n",
       "      <td>34176</td>\n",
       "      <td>468438</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906013</th>\n",
       "      <td>34176</td>\n",
       "      <td>963534</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906014</th>\n",
       "      <td>34176</td>\n",
       "      <td>613698</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906016</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906017</th>\n",
       "      <td>34176</td>\n",
       "      <td>963534</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906020</th>\n",
       "      <td>34176</td>\n",
       "      <td>157439</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906021</th>\n",
       "      <td>34176</td>\n",
       "      <td>475546</td>\n",
       "      <td>1397</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906023</th>\n",
       "      <td>34176</td>\n",
       "      <td>246109</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906025</th>\n",
       "      <td>34176</td>\n",
       "      <td>757713</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906026</th>\n",
       "      <td>34176</td>\n",
       "      <td>523545</td>\n",
       "      <td>662</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906027</th>\n",
       "      <td>34176</td>\n",
       "      <td>198962</td>\n",
       "      <td>1577</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1027</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35906085</th>\n",
       "      <td>34176</td>\n",
       "      <td>613698</td>\n",
       "      <td>821</td>\n",
       "      <td>3906</td>\n",
       "      <td>6268.0</td>\n",
       "      <td>1020</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          user_id  item_id  cat_id  seller_id  brand_id  time_stamp  \\\n",
       "35905644    34176   757713     821       3906    6268.0        1110   \n",
       "35905646    34176   757713     821       3906    6268.0        1110   \n",
       "35905672    34176   757713     821       3906    6268.0        1110   \n",
       "35905696    34176   718096    1142       3906    6268.0        1031   \n",
       "35905720    34176   757713     821       3906    6268.0        1031   \n",
       "35905791    34176   613698     821       3906    6268.0        1021   \n",
       "35905804    34176   757713     821       3906    6268.0        1108   \n",
       "35905824    34176   757713     821       3906    6268.0        1029   \n",
       "35905830    34176  1093165    1397       3906    6268.0        1027   \n",
       "35905831    34176   898580     662       3906    6268.0        1027   \n",
       "35905832    34176   569051    1577       3906    6268.0        1027   \n",
       "35905834    34176   185202     821       3906    6268.0        1027   \n",
       "35905876    34176   757713     821       3906    6268.0        1111   \n",
       "35905886    34176   757713     821       3906    6268.0        1111   \n",
       "35905895    34176   757713     821       3906    6268.0        1111   \n",
       "35905900    34176   757713     821       3906    6268.0        1111   \n",
       "35905960    34176   757713     821       3906    6268.0        1107   \n",
       "35905966    34176   757713     821       3906    6268.0        1107   \n",
       "35905995    34176   965699     662       3906    6268.0        1027   \n",
       "35905996    34176   187402    1577       3906    6268.0        1027   \n",
       "35905999    34176   757713     821       3906    6268.0        1027   \n",
       "35906001    34176   569051    1577       3906    6268.0        1027   \n",
       "35906005    34176   702940     662       3906    6268.0        1027   \n",
       "35906007    34176   832131     662       3906    6268.0        1027   \n",
       "35906008    34176    48054     302       3906    6268.0        1027   \n",
       "35906009    34176   757713     821       3906    6268.0        1027   \n",
       "35906011    34176   320263     662       3906    6268.0        1027   \n",
       "35906012    34176   468438     821       3906    6268.0        1027   \n",
       "35906013    34176   963534     821       3906    6268.0        1027   \n",
       "35906014    34176   613698     821       3906    6268.0        1027   \n",
       "35906016    34176   757713     821       3906    6268.0        1027   \n",
       "35906017    34176   963534     821       3906    6268.0        1027   \n",
       "35906020    34176   157439     662       3906    6268.0        1027   \n",
       "35906021    34176   475546    1397       3906    6268.0        1027   \n",
       "35906023    34176   246109     821       3906    6268.0        1027   \n",
       "35906025    34176   757713     821       3906    6268.0        1027   \n",
       "35906026    34176   523545     662       3906    6268.0        1027   \n",
       "35906027    34176   198962    1577       3906    6268.0        1027   \n",
       "35906085    34176   613698     821       3906    6268.0        1020   \n",
       "\n",
       "          action_type  \n",
       "35905644            0  \n",
       "35905646            0  \n",
       "35905672            0  \n",
       "35905696            3  \n",
       "35905720            3  \n",
       "35905791            0  \n",
       "35905804            0  \n",
       "35905824            0  \n",
       "35905830            0  \n",
       "35905831            0  \n",
       "35905832            0  \n",
       "35905834            0  \n",
       "35905876            2  \n",
       "35905886            0  \n",
       "35905895            0  \n",
       "35905900            0  \n",
       "35905960            0  \n",
       "35905966            0  \n",
       "35905995            0  \n",
       "35905996            0  \n",
       "35905999            0  \n",
       "35906001            0  \n",
       "35906005            0  \n",
       "35906007            0  \n",
       "35906008            0  \n",
       "35906009            0  \n",
       "35906011            0  \n",
       "35906012            0  \n",
       "35906013            0  \n",
       "35906014            0  \n",
       "35906016            0  \n",
       "35906017            0  \n",
       "35906020            0  \n",
       "35906021            0  \n",
       "35906023            0  \n",
       "35906025            0  \n",
       "35906026            0  \n",
       "35906027            0  \n",
       "35906085            0  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log[(user_log['user_id'] == 34176) & (user_log['seller_id'] == 3906)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "想要建立的特征\n",
    "需要根据user_id，和merchant_id（seller_id）,从用户画像表以及用户日志表中提取特征，填写到df_train这个数据框中，从而训练评估模型 需要建立的特征如下：\n",
    "\n",
    "用户的年龄(age_range)\n",
    "用户的性别(gender)\n",
    "某用户在该商家日志的总条数(total_logs)\n",
    "用户浏览的商品的数目，就是浏览了多少个商品(unique_item_ids)\n",
    "浏览的商品的种类的数目，就是浏览了多少种商品(categories)\n",
    "用户浏览的天数(browse_days)\n",
    "用户单击的次数(one_clicks)\n",
    "用户添加购物车的次数(shopping_carts)\n",
    "用户购买的次数(purchase_times)\n",
    "用户收藏的次数(favourite_times)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label\n",
       "0    34176         3906      0\n",
       "1    34176          121      0\n",
       "2    34176         4356      1\n",
       "3    34176         2217      0\n",
       "4   230784         4818      0"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>376517</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>234512</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>344532</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>186135</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30230</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  age_range  gender\n",
       "0   376517        6.0     1.0\n",
       "1   234512        5.0     0.0\n",
       "2   344532        5.0     0.0\n",
       "3   186135        5.0     0.0\n",
       "4    30230        5.0     0.0"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_info.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>brand_id</th>\n",
       "      <th>time_stamp</th>\n",
       "      <th>action_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>328862</td>\n",
       "      <td>323294</td>\n",
       "      <td>833</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>328862</td>\n",
       "      <td>844400</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>328862</td>\n",
       "      <td>575153</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>328862</td>\n",
       "      <td>996875</td>\n",
       "      <td>1271</td>\n",
       "      <td>2882</td>\n",
       "      <td>2661.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>328862</td>\n",
       "      <td>1086186</td>\n",
       "      <td>1271</td>\n",
       "      <td>1253</td>\n",
       "      <td>1049.0</td>\n",
       "      <td>829</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  item_id  cat_id  seller_id  brand_id  time_stamp  action_type\n",
       "0   328862   323294     833       2882    2661.0         829            0\n",
       "1   328862   844400    1271       2882    2661.0         829            0\n",
       "2   328862   575153    1271       2882    2661.0         829            0\n",
       "3   328862   996875    1271       2882    2661.0         829            0\n",
       "4   328862  1086186    1271       1253    1049.0         829            0"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_log.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender\n",
       "0    34176         3906      0        6.0     0.0\n",
       "1    34176          121      0        6.0     0.0\n",
       "2    34176         4356      1        6.0     0.0\n",
       "3    34176         2217      0        6.0     0.0\n",
       "4   230784         4818      0        NaN     0.0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#age_range,gender特征添加\n",
    "df_train = pd.merge(df_train,user_info,on=\"user_id\",how=\"left\")\n",
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  item_id\n",
       "0        1        471        1\n",
       "1        1        739        1\n",
       "2        1        925        4\n",
       "3        1       1019       14\n",
       "4        1       1156        1\n",
       "5        1       2245        5\n",
       "6        1       4026        5\n",
       "7        1       4177        1\n",
       "8        1       4335        1\n",
       "9        2        420       26"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#total_logs特征添加\n",
    "total_logs_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"item_id\"]]\n",
    "total_logs_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>total_logs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  total_logs\n",
       "0        1          471           1\n",
       "1        1          739           1\n",
       "2        1          925           4\n",
       "3        1         1019          14\n",
       "4        1         1156           1"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_logs_temp.rename(columns={\"seller_id\":\"merchant_id\",\"item_id\":\"total_logs\"},inplace=True)\n",
    "total_logs_temp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs\n",
       "0    34176         3906      0        6.0     0.0          39\n",
       "1    34176          121      0        6.0     0.0          14\n",
       "2    34176         4356      1        6.0     0.0          18\n",
       "3    34176         2217      0        6.0     0.0           2\n",
       "4   230784         4818      0        NaN     0.0           8"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train = pd.merge(df_train,total_logs_temp,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>638653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>556107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>504149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1110495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>896183</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>181459</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>452837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>543397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>779078</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>112203</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  item_id\n",
       "0        1        471   638653\n",
       "1        1        739   556107\n",
       "2        1        925   504149\n",
       "3        1       1019  1110495\n",
       "4        1       1156   896183\n",
       "5        1       2245   181459\n",
       "6        1       2245   452837\n",
       "7        1       2245   543397\n",
       "8        1       2245   779078\n",
       "9        1       4026   112203"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#unique_item_ids特征添加\n",
    "unique_item_ids_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"item_id\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"item_id\"]]\n",
    "unique_item_ids_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  item_id\n",
       "0        1        471        1\n",
       "1        1        739        1\n",
       "2        1        925        1\n",
       "3        1       1019        1\n",
       "4        1       1156        1\n",
       "5        1       2245        4\n",
       "6        1       4026        1\n",
       "7        1       4177        1\n",
       "8        1       4335        1\n",
       "9        2        420       15"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_item_ids_temp1 = unique_item_ids_temp.groupby([unique_item_ids_temp[\"user_id\"],unique_item_ids_temp[\"seller_id\"]]).count().reset_index()\n",
    "unique_item_ids_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>unique_item_ids</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  unique_item_ids\n",
       "0        1          471                1\n",
       "1        1          739                1\n",
       "2        1          925                1\n",
       "3        1         1019                1\n",
       "4        1         1156                1\n",
       "5        1         2245                4\n",
       "6        1         4026                1\n",
       "7        1         4177                1\n",
       "8        1         4335                1\n",
       "9        2          420               15"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_item_ids_temp1.rename(columns={\"seller_id\":\"merchant_id\",\"item_id\":\"unique_item_ids\"},inplace=True)\n",
    "unique_item_ids_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  unique_item_ids\n",
       "0    34176         3906      0        6.0     0.0          39               20\n",
       "1    34176          121      0        6.0     0.0          14                1\n",
       "2    34176         4356      1        6.0     0.0          18                2\n",
       "3    34176         2217      0        6.0     0.0           2                1\n",
       "4   230784         4818      0        NaN     0.0           8                1"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train = pd.merge(df_train,unique_item_ids_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>cat_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>389</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>1213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2</td>\n",
       "      <td>1179</td>\n",
       "      <td>500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2</td>\n",
       "      <td>1544</td>\n",
       "      <td>737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2</td>\n",
       "      <td>1679</td>\n",
       "      <td>1130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2</td>\n",
       "      <td>1784</td>\n",
       "      <td>420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>2</td>\n",
       "      <td>1816</td>\n",
       "      <td>276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2</td>\n",
       "      <td>1974</td>\n",
       "      <td>737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>2</td>\n",
       "      <td>1974</td>\n",
       "      <td>1326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2</td>\n",
       "      <td>2076</td>\n",
       "      <td>703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>2</td>\n",
       "      <td>2194</td>\n",
       "      <td>276</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    user_id  seller_id  cat_id\n",
       "0         1        471     389\n",
       "1         1        739    1252\n",
       "2         1        925    1023\n",
       "3         1       1019     992\n",
       "4         1       1156    1256\n",
       "5         1       2245     276\n",
       "6         1       4026    1252\n",
       "7         1       4177    1252\n",
       "8         1       4335     389\n",
       "9         2        420     602\n",
       "10        2        420    1213\n",
       "11        2       1179     500\n",
       "12        2       1544     737\n",
       "13        2       1679    1130\n",
       "14        2       1784     420\n",
       "15        2       1816     276\n",
       "16        2       1974     737\n",
       "17        2       1974    1326\n",
       "18        2       2076     703\n",
       "19        2       2194     276"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#categories特征构建\n",
    "categories_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"cat_id\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"cat_id\"]]\n",
    "categories_temp.head(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>cat_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  cat_id\n",
       "0        1        471       1\n",
       "1        1        739       1\n",
       "2        1        925       1\n",
       "3        1       1019       1\n",
       "4        1       1156       1\n",
       "5        1       2245       1\n",
       "6        1       4026       1\n",
       "7        1       4177       1\n",
       "8        1       4335       1\n",
       "9        2        420       2"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "categories_temp1 = categories_temp.groupby([categories_temp[\"user_id\"],categories_temp[\"seller_id\"]]).count().reset_index()\n",
    "categories_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>categories</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  categories\n",
       "0        1          471           1\n",
       "1        1          739           1\n",
       "2        1          925           1\n",
       "3        1         1019           1\n",
       "4        1         1156           1\n",
       "5        1         2245           1\n",
       "6        1         4026           1\n",
       "7        1         4177           1\n",
       "8        1         4335           1\n",
       "9        2          420           2"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "categories_temp1.rename(columns={\"seller_id\":\"merchant_id\",\"cat_id\":\"categories\"},inplace=True)\n",
    "categories_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  \\\n",
       "0    34176         3906      0        6.0     0.0          39   \n",
       "1    34176          121      0        6.0     0.0          14   \n",
       "2    34176         4356      1        6.0     0.0          18   \n",
       "3    34176         2217      0        6.0     0.0           2   \n",
       "4   230784         4818      0        NaN     0.0           8   \n",
       "5   362112         2618      0        4.0     1.0           1   \n",
       "6    34944         2051      0        5.0     0.0           3   \n",
       "7   231552         3828      1        5.0     0.0          83   \n",
       "8   231552         2124      0        5.0     0.0           7   \n",
       "9   232320         1168      0        4.0     1.0           4   \n",
       "\n",
       "   unique_item_ids  categories  \n",
       "0               20           6  \n",
       "1                1           1  \n",
       "2                2           1  \n",
       "3                1           1  \n",
       "4                1           1  \n",
       "5                1           1  \n",
       "6                2           1  \n",
       "7               48          15  \n",
       "8                4           1  \n",
       "9                1           1  "
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train = pd.merge(df_train,categories_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>time_stamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>1021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1111</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  time_stamp\n",
       "0        1        471        1111\n",
       "1        1        739        1018\n",
       "2        1        925        1011\n",
       "3        1       1019        1111\n",
       "4        1       1156        1111\n",
       "5        1       2245        1009\n",
       "6        1       4026        1018\n",
       "7        1       4026        1021\n",
       "8        1       4177        1018\n",
       "9        1       4335        1111"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#browse_days特征构建\n",
    "browse_days_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"time_stamp\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"time_stamp\"]]\n",
    "browse_days_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>time_stamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  time_stamp\n",
       "0        1        471           1\n",
       "1        1        739           1\n",
       "2        1        925           1\n",
       "3        1       1019           1\n",
       "4        1       1156           1\n",
       "5        1       2245           1\n",
       "6        1       4026           2\n",
       "7        1       4177           1\n",
       "8        1       4335           1\n",
       "9        2        420           1"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "browse_days_temp1 = browse_days_temp.groupby([browse_days_temp[\"user_id\"],browse_days_temp[\"seller_id\"]]).count().reset_index()\n",
    "browse_days_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>browse_days</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  browse_days\n",
       "0        1          471            1\n",
       "1        1          739            1\n",
       "2        1          925            1\n",
       "3        1         1019            1\n",
       "4        1         1156            1\n",
       "5        1         2245            1\n",
       "6        1         4026            2\n",
       "7        1         4177            1\n",
       "8        1         4335            1\n",
       "9        2          420            1"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "browse_days_temp1.rename(columns={\"seller_id\":\"merchant_id\",\"time_stamp\":\"browse_days\"},inplace=True)\n",
    "browse_days_temp1.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  \\\n",
       "0    34176         3906      0        6.0     0.0          39   \n",
       "1    34176          121      0        6.0     0.0          14   \n",
       "2    34176         4356      1        6.0     0.0          18   \n",
       "3    34176         2217      0        6.0     0.0           2   \n",
       "4   230784         4818      0        NaN     0.0           8   \n",
       "5   362112         2618      0        4.0     1.0           1   \n",
       "6    34944         2051      0        5.0     0.0           3   \n",
       "7   231552         3828      1        5.0     0.0          83   \n",
       "8   231552         2124      0        5.0     0.0           7   \n",
       "9   232320         1168      0        4.0     1.0           4   \n",
       "\n",
       "   unique_item_ids  categories  browse_days  \n",
       "0               20           6            9  \n",
       "1                1           1            3  \n",
       "2                2           1            2  \n",
       "3                1           1            1  \n",
       "4                1           1            3  \n",
       "5                1           1            1  \n",
       "6                2           1            1  \n",
       "7               48          15            3  \n",
       "8                4           1            1  \n",
       "9                1           1            2  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train = pd.merge(df_train,browse_days_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>seller_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  seller_id  action_type  item_id\n",
       "0        1        471            0        1\n",
       "1        1        739            0        1\n",
       "2        1        925            0        3\n",
       "3        1        925            2        1\n",
       "4        1       1019            0       10\n",
       "5        1       1019            2        4\n",
       "6        1       1156            0        1\n",
       "7        1       2245            0        5\n",
       "8        1       4026            0        4\n",
       "9        1       4026            2        1"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#one_clicks、shopping_carts、purchase_times、favourite_times特征构建\n",
    "one_clicks_temp = user_log.groupby([user_log[\"user_id\"],user_log[\"seller_id\"],user_log[\"action_type\"]]).count().reset_index()[[\"user_id\",\"seller_id\",\"action_type\",\"item_id\"]]\n",
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times\n",
       "0        1          471            0      1\n",
       "1        1          739            0      1\n",
       "2        1          925            0      3\n",
       "3        1          925            2      1\n",
       "4        1         1019            0     10\n",
       "5        1         1019            2      4\n",
       "6        1         1156            0      1\n",
       "7        1         2245            0      5\n",
       "8        1         4026            0      4\n",
       "9        1         4026            2      1"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp.rename(columns={\"seller_id\":\"merchant_id\",\"item_id\":\"times\"},inplace=True)\n",
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks\n",
       "0        1          471            0      1           1\n",
       "1        1          739            0      1           1\n",
       "2        1          925            0      3           3\n",
       "3        1          925            2      1           0\n",
       "4        1         1019            0     10          10\n",
       "5        1         1019            2      4           0\n",
       "6        1         1156            0      1           1\n",
       "7        1         2245            0      5           5\n",
       "8        1         4026            0      4           4\n",
       "9        1         4026            2      1           0"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp[\"one_clicks\"] = one_clicks_temp[\"action_type\"] == 0\n",
    "one_clicks_temp[\"one_clicks\"] = one_clicks_temp[\"one_clicks\"] * one_clicks_temp[\"times\"]\n",
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts\n",
       "0        1          471            0      1           1               0\n",
       "1        1          739            0      1           1               0\n",
       "2        1          925            0      3           3               0\n",
       "3        1          925            2      1           0               0\n",
       "4        1         1019            0     10          10               0\n",
       "5        1         1019            2      4           0               0\n",
       "6        1         1156            0      1           1               0\n",
       "7        1         2245            0      5           5               0\n",
       "8        1         4026            0      4           4               0\n",
       "9        1         4026            2      1           0               0"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp[\"shopping_carts\"] = one_clicks_temp[\"action_type\"] == 1\n",
    "one_clicks_temp[\"shopping_carts\"] = one_clicks_temp[\"shopping_carts\"] * one_clicks_temp[\"times\"]\n",
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts  \\\n",
       "0        1          471            0      1           1               0   \n",
       "1        1          739            0      1           1               0   \n",
       "2        1          925            0      3           3               0   \n",
       "3        1          925            2      1           0               0   \n",
       "4        1         1019            0     10          10               0   \n",
       "5        1         1019            2      4           0               0   \n",
       "6        1         1156            0      1           1               0   \n",
       "7        1         2245            0      5           5               0   \n",
       "8        1         4026            0      4           4               0   \n",
       "9        1         4026            2      1           0               0   \n",
       "\n",
       "   purchase_times  \n",
       "0               0  \n",
       "1               0  \n",
       "2               0  \n",
       "3               1  \n",
       "4               0  \n",
       "5               4  \n",
       "6               0  \n",
       "7               0  \n",
       "8               0  \n",
       "9               1  "
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp[\"purchase_times\"] = one_clicks_temp[\"action_type\"] == 2\n",
    "one_clicks_temp[\"purchase_times\"] = one_clicks_temp[\"purchase_times\"] * one_clicks_temp[\"times\"]\n",
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts  \\\n",
       "0        1          471            0      1           1               0   \n",
       "1        1          739            0      1           1               0   \n",
       "2        1          925            0      3           3               0   \n",
       "3        1          925            2      1           0               0   \n",
       "4        1         1019            0     10          10               0   \n",
       "5        1         1019            2      4           0               0   \n",
       "6        1         1156            0      1           1               0   \n",
       "7        1         2245            0      5           5               0   \n",
       "8        1         4026            0      4           4               0   \n",
       "9        1         4026            2      1           0               0   \n",
       "\n",
       "   purchase_times  favourite_times  \n",
       "0               0                0  \n",
       "1               0                0  \n",
       "2               0                0  \n",
       "3               1                0  \n",
       "4               0                0  \n",
       "5               4                0  \n",
       "6               0                0  \n",
       "7               0                0  \n",
       "8               0                0  \n",
       "9               1                0  "
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "one_clicks_temp[\"favourite_times\"] = one_clicks_temp[\"action_type\"] == 3\n",
    "one_clicks_temp[\"favourite_times\"] = one_clicks_temp[\"favourite_times\"] * one_clicks_temp[\"times\"]\n",
    "one_clicks_temp.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>action_type</th>\n",
       "      <th>times</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>471</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>739</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>925</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1019</td>\n",
       "      <td>2</td>\n",
       "      <td>14</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1156</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>2245</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>4026</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>4177</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>4335</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2</td>\n",
       "      <td>420</td>\n",
       "      <td>2</td>\n",
       "      <td>26</td>\n",
       "      <td>23</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  action_type  times  one_clicks  shopping_carts  \\\n",
       "0        1          471            0      1           1               0   \n",
       "1        1          739            0      1           1               0   \n",
       "2        1          925            2      4           3               0   \n",
       "3        1         1019            2     14          10               0   \n",
       "4        1         1156            0      1           1               0   \n",
       "5        1         2245            0      5           5               0   \n",
       "6        1         4026            2      5           4               0   \n",
       "7        1         4177            0      1           1               0   \n",
       "8        1         4335            0      1           1               0   \n",
       "9        2          420            2     26          23               0   \n",
       "\n",
       "   purchase_times  favourite_times  \n",
       "0               0                0  \n",
       "1               0                0  \n",
       "2               1                0  \n",
       "3               4                0  \n",
       "4               0                0  \n",
       "5               0                0  \n",
       "6               1                0  \n",
       "7               0                0  \n",
       "8               0                0  \n",
       "9               3                0  "
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "four_features = one_clicks_temp.groupby([one_clicks_temp[\"user_id\"],one_clicks_temp[\"merchant_id\"]]).sum().reset_index()\n",
    "four_features.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>label</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34176</td>\n",
       "      <td>3906</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34176</td>\n",
       "      <td>121</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34176</td>\n",
       "      <td>4356</td>\n",
       "      <td>1</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34176</td>\n",
       "      <td>2217</td>\n",
       "      <td>0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>230784</td>\n",
       "      <td>4818</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>362112</td>\n",
       "      <td>2618</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34944</td>\n",
       "      <td>2051</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>231552</td>\n",
       "      <td>3828</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>78</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>231552</td>\n",
       "      <td>2124</td>\n",
       "      <td>0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>232320</td>\n",
       "      <td>1168</td>\n",
       "      <td>0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  label  age_range  gender  total_logs  \\\n",
       "0    34176         3906      0        6.0     0.0          39   \n",
       "1    34176          121      0        6.0     0.0          14   \n",
       "2    34176         4356      1        6.0     0.0          18   \n",
       "3    34176         2217      0        6.0     0.0           2   \n",
       "4   230784         4818      0        NaN     0.0           8   \n",
       "5   362112         2618      0        4.0     1.0           1   \n",
       "6    34944         2051      0        5.0     0.0           3   \n",
       "7   231552         3828      1        5.0     0.0          83   \n",
       "8   231552         2124      0        5.0     0.0           7   \n",
       "9   232320         1168      0        4.0     1.0           4   \n",
       "\n",
       "   unique_item_ids  categories  browse_days  one_clicks  shopping_carts  \\\n",
       "0               20           6            9          36               0   \n",
       "1                1           1            3          13               0   \n",
       "2                2           1            2          12               0   \n",
       "3                1           1            1           1               0   \n",
       "4                1           1            3           7               0   \n",
       "5                1           1            1           0               0   \n",
       "6                2           1            1           2               0   \n",
       "7               48          15            3          78               0   \n",
       "8                4           1            1           6               0   \n",
       "9                1           1            2           2               0   \n",
       "\n",
       "   purchase_times  favourite_times  \n",
       "0               1                2  \n",
       "1               1                0  \n",
       "2               6                0  \n",
       "3               1                0  \n",
       "4               1                0  \n",
       "5               1                0  \n",
       "6               1                0  \n",
       "7               5                0  \n",
       "8               1                0  \n",
       "9               1                1  "
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "four_features = four_features.drop([\"action_type\",\"times\"], axis=1)\n",
    "df_train = pd.merge(df_train,four_features,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "df_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 260864 entries, 0 to 260863\n",
      "Data columns (total 13 columns):\n",
      " #   Column           Non-Null Count   Dtype  \n",
      "---  ------           --------------   -----  \n",
      " 0   user_id          260864 non-null  int64  \n",
      " 1   merchant_id      260864 non-null  int64  \n",
      " 2   label            260864 non-null  int64  \n",
      " 3   age_range        203802 non-null  float64\n",
      " 4   gender           250170 non-null  float64\n",
      " 5   total_logs       260864 non-null  int64  \n",
      " 6   unique_item_ids  260864 non-null  int64  \n",
      " 7   categories       260864 non-null  int64  \n",
      " 8   browse_days      260864 non-null  int64  \n",
      " 9   one_clicks       260864 non-null  int64  \n",
      " 10  shopping_carts   260864 non-null  int64  \n",
      " 11  purchase_times   260864 non-null  int64  \n",
      " 12  favourite_times  260864 non-null  int64  \n",
      "dtypes: float64(2), int64(11)\n",
      "memory usage: 25.9 MB\n"
     ]
    }
   ],
   "source": [
    "#建立好的特征的缺失值处理\n",
    "df_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                0\n",
       "merchant_id            0\n",
       "label                  0\n",
       "age_range          57062\n",
       "gender             10694\n",
       "total_logs             0\n",
       "unique_item_ids        0\n",
       "categories             0\n",
       "browse_days            0\n",
       "one_clicks             0\n",
       "shopping_carts         0\n",
       "purchase_times         0\n",
       "favourite_times        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.isnull().sum(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 260864 entries, 0 to 260863\n",
      "Data columns (total 13 columns):\n",
      " #   Column           Non-Null Count   Dtype  \n",
      "---  ------           --------------   -----  \n",
      " 0   user_id          260864 non-null  int64  \n",
      " 1   merchant_id      260864 non-null  int64  \n",
      " 2   label            260864 non-null  int64  \n",
      " 3   age_range        260864 non-null  float64\n",
      " 4   gender           260864 non-null  float64\n",
      " 5   total_logs       260864 non-null  int64  \n",
      " 6   unique_item_ids  260864 non-null  int64  \n",
      " 7   categories       260864 non-null  int64  \n",
      " 8   browse_days      260864 non-null  int64  \n",
      " 9   one_clicks       260864 non-null  int64  \n",
      " 10  shopping_carts   260864 non-null  int64  \n",
      " 11  purchase_times   260864 non-null  int64  \n",
      " 12  favourite_times  260864 non-null  int64  \n",
      "dtypes: float64(2), int64(11)\n",
      "memory usage: 25.9 MB\n"
     ]
    }
   ],
   "source": [
    "# 缺失值向前填充\n",
    "df_train = df_train.fillna(method='ffill')\n",
    "\n",
    "df_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '训练集用户性别年龄分布')"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABI0UlEQVR4nO3deVyU5f7/8fcwMyyKHMMV13DNLc29cD9mZZ6Mr7ZgntTcjlqp52h6OuVSxwytNLXMJXcT09KTdTTLtdTU41ZamrmAqAhqpcgAM3D//vDB/BpBBWQY9H49Hw8fcd/XvXyuYYI3133d91gMwzAEAABgYn6+LgAAAMDXCEQAAMD0CEQAAMD0CEQAAMD0CEQAAMD0CEQAAMD0CEQAAMD0CEQAAMD0CEQAAMD0CESAl2RmZiohIaFQz2mWB8+fP38+z/tkZmYqNTVVmZmZXqio4GRmZiojI8PXZfjETz/9pCNHjvi6DJgUgQjwktdff11NmjTR999/X2DHXLdu3XXbMjMzde+992r27Nl5OuaAAQO0fv1693JSUpI6d+6sr776Kk/HiY2N1eHDh/P8Ly0tLU/nGTx4sO655x4lJyfnab8vvvhCQUFB+uyzz667TUxMjO6++27t27fvhsdKSkrS/v37r/vv0qVLOe63atUqdezYUXFxcdc99pdffqly5cpp8ODBBRKMYmJitGDBghzbvv/+e/Xt21ffffddno65Z88eLVq0SE6nU5KUnp6uhx56SP/4xz9uqdZJkybpnnvu0YoVK27pOEC+GAC84vTp00b9+vWNP/3pT8b27ds92iIjI43o6Ogc90tMTDRKlSplrFmzxmP91q1bDUnGyy+/nON+O3bsMCQZH3zwQa5rXLt2rSHJeOqpp4zMzEzDMAzj/PnzRoMGDYzg4GDj4MGDuT5Wy5YtDUl5/nfgwIFcn8MwDOPTTz81JBlTpkzJ035ffvmlIcn473//67H+m2++MX7//XfDMAxj4cKFhiRj7969NzzWe++9d8M+ffnllznuN3v2bEOSceLEieseu02bNoYkY86cOXnq3x8dOHDAOHnypGEYhvHEE08Y3bp1y3G7d955x5BkLF26NE/Hf+qppwyLxeLxOj355JNG8eLFjbNnz+ar5pSUFCM0NNSoWbOm4XK58nUM4FbYCiV1ASZUoUIFbdq0SW3bttUjjzyir7/+Wk2bNpUkHTlyRMWLF5ckXbx4UW3atNGECRPUtWtXBQQE6MKFC7JarR7H+/DDDxUaGqphw4ZJunrZ6NKlSwoICJDVatWyZcsUHBysTp06uS/VOZ1OpaWlqVSpUrrrrrs8jvf7779r4MCBKl68uP7xj394XKqIjo7WrFmzlJaWpsOHD0u6ejkuLS1NLpfL3Y8/8vf3V0REhL799luP9U2bNlVgYGC29VOnTtXw4cMVEBCQp9f1scceU4UKFfTll1+6X4vc8Pf39/hvlr/85S968MEH9fHHH7truVlNWe2fffaZypQp416/d+9eDRkyxN0eHx+vJUuW6NFHH1WDBg1kt9slSTZbzj96Y2JitHXrVtWtW1etWrVyv/Y5cTqdSk9Pl8vlUosWLTzannvuOXXo0EGTJk2S3W5XcnKyvv/+e6WmpqpevXru997atWtltVr17rvv6umnn5af380vGhw6dEgrVqxQVFSU7rvvPvf61157TZ9++qleeOGFG47wxMXFKTMzU3a73eM9HhMTo4sXL2rEiBFKSkrKtp9hGMrMzHSPSt199903rRXICwIR4EWlS5fWl19+qR49eqh06dLu9UFBQe5fmv7+/jp06JB+/fVXSXL/UrJYLO7tz549q2XLlun9999XmTJldOXKFc2YMUPjx4+XJFmtVmVkZMjPz081a9Z075d1yWX69Ol6/vnn3eszMzP1zDPPuC/dNG/ePMf6//Of/2Rb96c//Um//fZbtvV2uz1fl3iuFw5+/fVXLV++PMe25557ThUrVtQHH3yQY3u/fv2yHTdr2Wq1Ki4uTlWqVNGpU6f022+/KSIiwt0m6abBIGu7++67T5UqVXKvT01N9Wg/d+6c/vnPf6patWpq0KDBDY955swZvfjii7JarTp37pxatWrlbrt8+bJcLpc71BqG4Q5EVqtVV65c8ThWQECAO/hZrVatW7dOGzduVGpqqr777js1adJEBw8e1FdffaX33ntPb775psaOHavXX3/9hjVK0vDhw2W1WvXaa695rK9du7ZeeOEFTZkyRbNnz9aAAQNy3P/ZZ5/Vli1brnv8l19+WS+//PINa2jYsKH2799/01qBvCAQAV5WqVIlbd261WOdv7+/O/BcLxD80dtvv6369eurT58+kqRHH31U5cuXV2pqqgICArRhwwZ17NhRe/bsUaNGjTz2zfqL+o9GjBihL774QtLViaz33HOPu23//v267777NH/+fPXu3du9Puuv8+uNnuRmdCEn146EZTl37pwGDRqUr2P269fP/fWuXbu0c+dO3XvvvZKk5cuXa+nSpYqPj3fP7/rll1/0wQcfuOcOLV++XOXKlVNGRoYcDof69u3rMcJm5HLyelYoyRoZup6MjAz16NFDSUlJeu+99zR48GCP9scff1z79+/XyZMnc3Veq9Xqfl9ZLBZFRUVlm0f02muvqWrVqurXr59q1Kihzp07Kzw8XM8999x1j/vBBx/oq6++0rBhw1S9evVs7a+//ro+//xzDRkyRBUqVFCXLl2ybRMTEyPDMNwjRBaLRaNHj9asWbP0+eefu8PpzfoHFDQCEVDAXC6XBg8erKCgIPcvwn/84x8KCwtzb2Oz2XL9S/XYsWOaOXOmNmzYID8/P+3YsUNbtmzRv//9b2VkZCgzM1MffvihHnjggWxhSMr+y3jKlCmaMmWK2rZtqy1btqhJkyYeo1FZd2H97W9/c48qGYah1NRU9enTR3Pnzs2xTovFom3btnkc69r2vMiqe86cOR4B50batWunrVu3eoTMzz//XDNmzHBPpu7YsaPmzZunjz76SEePHpXFYtGyZcskXZ0cLF29nJc16paSkqLIyEiPQJQ1ErZgwQKVLFnSvf7o0aMe7Vl9vlnfhw0bpi1btqhbt27ZwlBeOBwO7dixQ5cuXdL58+d1+PBh9wTvH3/8Uenp6apZs6Y2bdqkFStWaPHixbLb7erUqZPefPNN9e3bVydPntSrr76a7X1z/PhxjRw5UpUrV3aPTF6rePHiWr16tVq3bq3IyEjNmDFDAwcO9NimfPnyHsvff/+9PvzwQz322GN69NFHJUktW7ZUcHCwvv7663y/FkBeEYiAApaZmalvvvlGQUFB+v3333X8+HH17dvXIxClpqbmKhBdunRJ3bp1U+3atXX8+HH9+OOPmj59uu677z7dfffd7rkgWbJ+8Q4dOlRTp07N8ZgJCQkaNmyYunbtqvbt22vPnj05jhB98MEHHiNELpfrundPZZ27cePGWrp0qcf67t27KyAgINv6RYsWaeLEidc93s1GVa7n2hG3o0ePql69eu7lUqVKqUuXLlqxYoXi4+PVpk0bbd68WZK0cuVKPfHEE9qxY4fHa3KttLQ0Wa1WjRs3Llub1WrN051zr776qmbMmKF69erp3XffzfFRDWlpacrIyNDZs2fdc2nS09OVnp6uGjVquPt85swZde7cWQEBAYqLi3OPxhiGofvvv19paWn66KOPNGTIED3yyCNq1aqV7r33Xi1evFgjRoyQ1WrViBEj9J///EebN292h8Dff/9djz32mBwOh7744guFhIRctz9169bVxo0b9fDDD+tvf/ub1q1bp+nTp3tcWsySkpKiZ599VoGBgdd9vwKFhUAEFDB/f3/99NNPkq6OIPTp0yfbRF6Hw5GrS2XFihXT+fPndeHCBb311ltKTEzUmTNntH37dtWrV0+xsbFavHixJk+erIMHDyowMFD33nuvgoKCrnvM6OhoSXKHgDp16uS4XZ8+fdyX6LKUKlXqus8AMgxDQUFB2YJEYGCgAgMDs60vW7bsDfue38si116627Nnjzp27Oix7q233tKePXv0xBNPaNSoUXk+x5AhQzRkyBBJVy9nBQcHa8mSJfmq96WXXlJwcLCefPJJTZ06VW+99Va2vmdmZsowDFWsWDFbkD516pQ7bFSvXt09jynLe++9p65du7q36dmzp4KDg7V48WKVKFFCTqdT/fr1086dOzV8+HDVrl1bGRkZ7jD022+/6ZFHHtGhQ4f03HPPae3atdq0adNNvz+jRo3SokWLtHr1am3fvl1HjhzxGE2Trr7HDhw4oBEjRnhM4E9PT1dqamqOk8qrVauW7f8noCAQiIBCcO0P8JSUlBuGliw2m03fffedypYtK5fLpXr16mngwIFq2bKlpKuBadGiRerbt6/7F56fn1+uwkTWL9YdO3aoRo0a7vUHDx5U+/btNX36dD399NPu9S6X64YjHwX9MMGsYPPTTz/l+tJJ1sT0LElJSTp69KhGjx7tsT48PFxr1qxReHi4evTocUt1Hj9+XIGBgfnev0SJEu5QlvU+cblcHttcO4fIMAz3CFFwcLDHtqtXr9bzzz+vQ4cOKTU1Vc8//7zKlCmjJk2aaODAgZo0aZLKlSunUqVKSZJmzJihNWvWKD09XUFBQercubPH8VasWKGdO3dqyJAh6tixoyIjI3PVrxdffFHbtm3Tiy++qHbt2nmEIcMwNGTIEH388ceSrgbUt956K9sxcgrrR44cUa1atXJVA5AXBCKgEPxxDkl6erri4uI87jq7kaygk/VLc9KkSe621157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SDwDAr5TGI/IL8o/3AD4zqVLl27bKxxnz57V999/r6ZNm6pUqVK52ufEiRM6evSo7r//fpUoUeKG217vtbHb7UX/OUQAAMAcwsLC8vwk6fDwcIWHh3upouyK7BwiAACAwkIgAgAApkcgAgAApkcgAgAApkcgAgAApkcgAgAApsdt9wAA3MZ6L9xRqOdb0Ov+Qj1fYWGECAAAeNXFixfVsmVLnTp1Klfb79ixQ23btlX9+vU1a9YsL1d3FYEIAAB4zcWLF9WrV69ch6ELFy6oT58+evzxx/XZZ59p1apV2rZtm5erJBABAAAvGjRokLp27Zrr7T/99FOVLVtWw4YNU7Vq1TR8+HDFxMR4scKrCEQAAMBrJk2apH79cv85kD/++KMiIiJksVgkSY0aNdIPP/zgrfLcCEQAAMBrqlatmqftk5OTVaVKFfdyiRIllJCQUNBlZUMgAgAARYbVapW/v797OSAgQA6Hw+vnJRABAIAio2TJkrpw4YJ7OTk5WXa73evnJRABAIAio1GjRtq7d697+dChQypfvrzXz0sgAgAAhe7y5ctyOp3Z1nfq1Em7d+/Wtm3b5HK59MEHH6hdu3Zer4cnVQMAcBu7XZ8c3bFjR40fP14PP/ywx/rQ0FC9+uqreuaZZ1SiRAkVK1ZMb7/9ttfrIRABAACvO336tMfyzp07r7tt79691bZtWx09elT333+/SpQo4e3yCEQAAKDoCQ8PV3h4eKGdjzlEAADA9AhEAADA9AhEAADcJjIzM31dQpFjGEaBHIdABADAbaBYsWK6fPkyoegaKSkpCggIuOXjMKkaAIDbgM1mU/HixZWcnOzrUooMwzBks9kIRAAAmInNZlNISIivy7gjcckMAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYns2XJ583b57WrVvnXi5XrpymT5+uuLg4zZw5UwkJCerQoYN69uwpi8UiSV5pAwAA5ubTEaLjx49r9OjRmj9/vubPn69JkybJ6XQqOjpa4eHhmjhxouLj47V582ZJ8kobAACAzwJRRkaGTp06pbp166p48eIqXry4goKCtG/fPqWkpKhXr14qX768oqKitHHjRknyShsA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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#特征可视化\n",
    "plt.style.use('ggplot')\n",
    "sns.countplot(x = 'age_range', order = [1,2,3,4,5,6,7,8],hue= 'gender',data = df_train)\n",
    "plt.title('训练集用户性别年龄分布')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['user_id', 'merchant_id', 'label', 'age_range', 'gender', 'total_logs', 'unique_item_ids', 'categories', 'browse_days', 'one_clicks', 'shopping_carts', 'purchase_times', 'favourite_times']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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nz6t1NRU7dixQ3/6058kSUuWLFF9fb0KCwtVWVmpPn366Kc//an+4R/+QbW1tXrssce0Zs0a3XfffUZfAAAAVtWiko2Pj1dmZqYk6eTJk/r444+1b98+7dq1SxEREXrooYf8zr26XC49+uijmjdvnkaMGKFu3bqZSQ8AgIW1+Jxsfn6+Bg4cqNOnT2vHjh2aM2eOdu7cqe3bt+uLL75QaWmphg8frsTERO3fv19/+9vfdNNNN2n37t2ULADgitTiko2NjdVLL72k3r17y+Fw6MCBA8rJydG0adN00003KSMjQ2+88YaGDBmiqqoq9e3bV5MmTQr4ma0AAHR0LboyqaGhQXfeeaeeeeYZDRkyRHa7XcePH9dDDz2kG2+80bfc008/raioKO3bt0/du3enYAEAV7QW7cl+9tln+sMf/uA3b9euXZKkoUOHavDgwZLOn7v98Y9/rL/97W96+eWX1a9fPx6QDgC4YrWoZPv376//+I//kN1u14EDB7RixQp17dpV06dP13fffafFixdLkjZu3Kja2lqNHDlSdrtdK1asUFZWltEXAACAVbXocLHL5VJERISWLFmihoYG9enTR0lJSfrjH/+oIUOGaNmyZZKkjz/+WK+//rrS09M1fvx47dy5UydOnDD6AgAAsKoW3y1i2bJlGjVqlOLi4hQWFqasrCx5PB7l5+f7bjrxb//2b5o1a5b69++vyMhIDRkyRO+9956x8AAAWFmLry7+zW9+o8jISB09elQjR46Uw+HQjBkztHnzZknSkCFDJEmDBg3yrTNmzBi53e52jozW+NmqL/ym35zQL0RJAODK0+KSjYyMlCQlJycrOTlZktS1a1dNmjRJ0vl7GV+oXz9+oQMArlzcXBgAAENa/RSeyspKLV++XA6Hw3cu1uv16ty5c7rppps0dOjQdg8JAEBH1OqSra2t1fbt25WSkiLpfMEePXpU/fr1k8fjafeAAAB0VAE/T3bRokWSzpfu5MmTlZWVxY0nAAD4Hs7JAgBgCCULAIAhLT5c3NDQoI8++kjR0dEm8wAAcNloUcmWlpbq3//933Xy5EndddddhiMBAHB5aFHJJiQk6KabbtJPfvIT1dXVad26daZzAQDQ4bXonGxYWJgmTpyohIQE2Ww205kAALgscOETAACGBPw92YqKCknS2bNnJZ2/E1RsbKzvLlAAAFzp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GTJE99xzj+bNm2e5rI169OihNWvWaP/+/dq7d6/y8vI0cuRIDRw40JKZBw0apOLiYr399ts6efKkNm7cqCNHjlg2b6Pdu3fruuuu801b9XdE37599cknn+itt97S+++/ryeffFJXX321br/99qDm5d7FQfTJJ58oJydHUVFRvicAde/ePdSxmrjnnnv0/PPP+25GYdXcn3zyif7whz80mf/888/ryJEjlsy8a9cu5efnq7KyUgMHDtS0adMUExNj2fe40X/+53/quuuu08iRIy2d9b/+67/0zjvvKDIyUsOGDVNGRoYiIyMtm/ngwYNasWKFvv76a8XGxmrSpEkaNmyYZfPW1dVpypQpevLJJ9WtWzfffCvm9Xq9Wrt2rd577z198803Sk5O1vTp09WzZ8+g5qVkg6yjPgGoI+buaJk7Ut6OlLVRR8tMXrOClZeSBQDAEGsc5AcA4DJEyQIAYAglCwCAIZQsAACGULIAABhCyQJo1j333KN9+/YFvP6+fft0zz33tGMioGOhZAELKisr02uvvRbw+vv27bPEg7OBKx0lC1hQeXm51q5dG/D6lCxgDZQsAACG8BQewEJee+01vz3YxvOZt956qx5++GFJ5+9/vGrVKhUXF8vtduu+++7TsGHDJElz587V/v37m6w/Y8YMjRw5UtL5p5OsWbNGf/3rX3XmzBn16NFDU6dOVc+ePYPxEn1KSkqUl5enffv2yeVyaezYsRo/frzvRu0ej0d5eXnavn27oqOjddttt+mTTz7RVVddpSeeeEKS9Pbbb+vPf/6zKioqFB8fr5///Oe69dZbg/o6gEuhZAELGTNmjAYPHqzDhw/rpZde0oIFCyRJnTp1knT+MPDChQs1cuRITZo0SZ9++qmeeuopzZw5U0OGDFFmZqZqamq0efNmHT58WJmZmZLke9iDdP6pIxs2bND06dPVuXNnbdq0Sc8884wWL14ctNf53Xffac6cOerSpYtmzpyp48ePa/Xq1Tpz5owmTZokSdqwYYN2796trKwsFRUVafny5crKylJiYqLvvXj55Zd1991367rrrtPevXu1ZMkS9erVy/fYQyDUKFnAQuLi4hQXF6fa2lpJUq9evfzG//SnP6l379765S9/KUlKT09XaWmpXnvtNQ0ZMkRdu3aVJH322WeKiopqsr4kpaSk6Fe/+pWGDBkiSaqqqtJHH32k7777TldffbXJl+fz3//93zp79qx+/etfq1OnTrrhhhtUX1+v1atX66677lJMTIwOHjyom266STfccINuuOEGvfnmm/J6vb497vLycknSbbfdptjYWPXr10+9evUK+XNMge+jZIEOpKCgQD/96U/95qWnp2vFihWqr6/3PUj7Uv7u7/5OH330kZYsWaKDBw+qpKRE0vkHswdLQUGBevTo4dtDl6Qf/ehHOnfunI4cOaLrr79e3bp104EDB1RVVaWioiKdPn3abw918ODBSkhI0KxZs5Senq7evXvrxhtvVGxsbNBeB/BDuPAJ6EAu9tAsm8120fnNee655/TKK68oLi5O999/v++QdLDZbDa/6Qsfmp2SkqKjR4/qn//5nzVnzhz94z/+o3r06OEb79Spk55++mk98MADuvrqq7Vx40ZlZWWpuLg4GPGBFmFPFrAgp9Mp6fxDssPDw33ze/Xq1eTmEJ9//rlSUlL89mLDw8NVV1fXZLvV1dXavn27fvnLX2r06NGSzl9IFWy9evXSxo0bVVVV5Tu8+/nnnyssLEw9evSQ1+tVbm6u5s+fr/DwcHXq1EnR0dF+2/j444915swZjR49WsOGDdO9996rBx98UB988AE3wIBlsCcLWFBSUpKioqL05ptvav/+/dq0aZO+/fZb3X333fryyy/14osvau/evXr11Ve1c+dO3XvvvX7rp6Wl6euvv9bHH3+sPXv2aOPGjZLOl29ERIQ+/fRTHThwQG+99ZaeffZZSeevOg6Wn/zkJwoPD9eiRYu0a9cubdq0Sa+99ppuv/12xcTEyGazKTw8XBs3blRFRYXKyspUVlbmt8fu8XiUn5+vLVu26Msvv9Tbb7+t2tpadenSJWivA/ghPLQdsKjPPvtMy5cvV1lZmeLj4/W73/1O11xzje8rPEVFRUpMTPT7Cs/3vfHGG/rLX/6iqqoq/ehHP/J97eXTTz/VypUrdfLkSSUnJ+uOO+7Q888/r+nTp/u+5tPonnvu0Zw5c3TdddcF9Br27dunefPmXfTuVSUlJcrNzdX+/fvlcrl022236ec//7nvsPHy5cu1ZcsWeb1e1dbWyuv1KiEhQU888YTvAq8NGzZo8+bNqqioUExMjEaNGqW77767yaFoIFQoWQCtcu7cuUuOh4WFtflnfP7553r66af10EMP6ZprrpHX69WJEyeUm5uru+++W3fccUebfwYQDJQsgBYrKyvTI488csllXn75ZcXExLTp59TU1Gj58uXas2ePvv32W0lSfHy8Bg0apHvvvVeRkZFt2j4QLJQsgBarr69XUVHRJZdJTk5ucqUwcKWiZAEAMIR/bgIAYAglCwCAIZQsAACGULIAABhCyQIAYAglCwCAIZQsAACGULIAABjy/wHWwbxoxYeThAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 500x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "colnm = df_train.columns.tolist()\n",
    "print(colnm)\n",
    "plt.figure(figsize = (5, 4))\n",
    "color = sns.color_palette()\n",
    "\n",
    "df_train[colnm[5]].hist(range=[0,80],bins = 80,color = color[1])\n",
    "plt.xlabel(colnm[5],fontsize = 12)\n",
    "plt.ylabel('用户数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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CxYs8G3fc889kqT+/furqKjIt3/37t1asWKFKisr1bVrV/30pz/ViBEjfPXeeuutevvtt9XS0qIZM2Zo8eLFOnbsmO6++24NHjw44Bov9LP88ssv9eKLL+rgwYPq3bu3rr32Wr/xhoYGvfzyy9q+fbuamprUt29f3XHHHerevXvArw9cDrjCBCDk3njjDX344Ye666679C//8i9688039fHHHwf0vSdPntTjjz+uDh066P7779fgwYP1+uuvB/X6ZWVlWrJkiW6++WY9+OCD6tSpkx577DGdOHHiYto5x6BBgzR37lzdf//9kqT7779fc+fOVWFhoe+Yw4cPa86cOerTp48efvhhDRs2TCUlJdq1a5fvmM2bN+vOO+/UmTNnVFxcrJ/+9Kfq3bu31q9fH5I63W635s2bp6SkJN1///269tprtXr1ar9jlixZol27dqmwsFC/+c1vdObMGT333HMheX3ASrjCBCDk6uvr9eyzzyoxMVEDBw7Upk2bVFFRoUGDBhm/d9OmTXK73fr1r3+tTp066dprr1VlZaW+/PLLgF9/1apV+sEPfqCbbrpJktSrVy/dcccd+vDDDzV69OiL7qvVlVdeqSuvvNL3rrSePXuec2VnzZo16tGjh6ZOnSrp7NWnjz76SBs3blR+fr4k6V//9V81YMAAde/eXd27d9cNN9ygqqoqffrpp5dco3T2Z9nQ0KBf//rX6ty5swYMGKCKigrt37/fd0xdXZ169eqloUOHSpJ69OihqqqqkLw+YCUEJgCXrKWlxW975MiRSkxM9G0nJyerubk5oHPV1NQoLS1NnTp18u3Lzc29YGD69uu73W7V1dVp3bp1Wrdund9x1dXVAdUQCpWVlTpw4IDfrTxJio+P933duXNnSZLNZvN9HUrV1dVKS0vzO3deXp5fYPrnf/5nzZ8/Xw8//LBycnLUv3//gIItcLkhMAG4ZEePHvXbdrlcF32ub69zauX1eoN6fUm69dZbNXDgQL99ycnJF13XxRgyZIh+/vOf++3r0KFDu72+1+uV3e6/8uK728OHD1ffvn21c+dO7d27VyUlJerXr58eeuih884FcLliDROAoMTFxUmSmpqafPu2bNnid8x3/1EORkZGho4cOaLjx4/79u3Zsyfg109KSlJaWppOnDihq6++2ve/DRs2aO/evRdd1/m0hp9v19KqR48eOnLkiF8Ne/fu1bvvvhvSGi7E5XKprq5O9fX1vn2fffaZ3zErVqzQqVOnNHbsWN1zzz268847tWPHDtXV1bVbnUAsIDABCErnzp115ZVXasOGDWppadHHH38cskXKkjRixAh17NhRJSUl2rlzp0pLS/0WjAfy+j/72c/01ltv6X/+53+0Z88eLVmyRG+//bbS09NDVqckpaSkKC0tTf/3f/+nvXv3qqyszLf+Z8KECaqsrNSiRYv0ySefaP369Vq2bJmSkpJCWsOFjBgxQomJib6f5erVq/X+++/7HXPgwAH9+c9/1vbt2/Xpp59q06ZNSkhI8LslCoDABCBIdrtdM2bM0IcffqgpU6botdde0+zZs0N2/o4dO2r27Nk6efKk5s2bpx07dugnP/lJUK8/ZswY/epXv9L69ev1u9/9Tp9++qlmzZqlvn37hqzOVv/+7/+uL774Qo8++qheffVV31qtq666Sg8//LAOHDigOXPmaO3atbrllls0fvz4kNfQFqfTqd/+9rdyu9168skntXXrVv3oRz/yO2b69Onq0qWLnnvuOT3xxBOqr6/X7NmzlZCQ0G51ArHA5jUtDgCACCsvL9df//rXkLzdvaWl5YJromw22yXdUgwVU512u501RkA7YtE3gMtKaWmpSktL2xwfOHCgHnjggXas6PxmzJhxwXVE9957r773ve+1Y0XA5Y0rTAAuK8ePH/dbUP5dHTt2POeZSpFQVVV1wUcxdO3aVR07dmzHioDLG4EJAADAIPI36gEAAKIcgQkAAMCAwAQAAGBAYAIAADAgMAEAABgQmAAAAAwITAAAAAYEJgAAAIP/BygVb95kmA+TAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[6]].hist(range=[0,40],bins = 40,color = color[1])\n",
    "plt.xlabel(colnm[6],fontsize = 12)\n",
    "plt.ylabel('用户数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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hYWFmjFjhlJTU1VTU6O8vDzFxcVJkrKzs1VfXx98XnfXrsTv98vv9we3DcMIhrruvJR38VhcHrQGcw4/XtPWYM7WYM7WiIY5RzwwZWRkXLKvoaFBWVlZmjp1qpKSkrRmzRqtXr1aCxYskNfrVVpaWvCxhmHIZrOppaUlLDWn03nZvrds2aJNmzYFt3NyclRWVhZynO7kcrnCctzwORzpBrqk582552LW1mDO1mDO1ojknCMemC6nuLhYxcXFwe1p06Zp1qxZ8ng8stlscjgcIY+PjY2Vz+cLS+1KJkyYoPHjxwe3L6bepqYmtbW1de4b/g6GYcjlcsntdisQCHTbcXF5zDn8eE1bgzlbgzlbI5xzttvtHTrZEZWB6e8lJiYqEAjozJkzcjqdqqurC6l7vV7Z7faw1K7E4XBcErIuCscPTSAQ4IfRAszZOszaGszZGszZGpGcc8QXfV9OZWWldu3aFdw+evSoDMNQSkqKcnNzdeTIkWCtsbFRfr9fTqczLDUAAICoDEwDBgzQxo0bdejQIR08eFAVFRUaPXq04uLiVFBQII/Ho507d0qStm7dqqKiItlstrDUAAAAovKS3KhRo9TQ0KClS5cqPj5ew4cPV0lJiSQpJiZGpaWlKi8v14YNG9Te3q5FixaFrQYAAGAEeuhF1+bmZlVXVys/P19JSUlhr3VUU1NTyO0GrpZhGOrbt69OnjzZo66P/+TlzyLdQqftnTO2x825J+qpr+mehjlbgzlbI5xzdjgcvWfR9+UkJycrOTnZshoAALh2sUgHAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADAhD3SDUjSuXPnNG/ePC1cuFDp6emSpL1796qyslKnTp3STTfdpJkzZyozM1OStGbNGm3fvj34/IyMDC1fvlySVFtbq1Wr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/vvv11dffaWamppIt9YrRcN7Iu8MUcrpdKquri5kn9fr5c08DL766iuVl5dr+vTp3E4gTD744AOdPXs2+Btb58+f1+7du3X06FFNnz49ss31MqmpqZe8iZw6dUq33HJLhDrqndrb23X27Nngttfr1fnz59Xe3h7BrnqvaHhP5N03SuXm5oYsaGtsbJTf7w/+qxHdw+fzacmSJRo2bJiGDRum1tZWSVJcXJwMw4hwd73Hr3/9a124cCG4vX79eg0aNIj7MIXB4MGDtWbNGv3hD3/QkCFDtGfPHh0/flyzZ8+OdGu9Sn5+vlatWqVt27apT58+evfdd3X99derf//+kW6tV4qG90QCU5QqKCiQx+PRzp07NWrUKG3dulVFRUWy2biK2p3279+vhoYGNTQ06N133w3uX7FiBTeg60YpKSkh2/Hx8UpKSuIDrsPA6XRqwYIFWr9+vdatW6c+ffpo9uzZvJ672Z133qkTJ07o97//vb7++mv1799fjz32GFcBwiQa3hP58N0o9uc//1nl5eVKSEhQe3u7Fi1apKysrEi3BQBA2N13330h/3iN9HsigSnKNTc3q7q6Wvn5+fxrHABwTYvkeyKBCQAAwAQLYgAAAEwQmAAAAEwQmAAAAEwQmAAAAEwQmAAAAEwQmADAYo2Njbrvvvv4fDegB+G2AgB6jU8//VRNTU1R/5ErbW1tqqmpUXZ2NneGBnoIzjAB6DU+/fRTVVVVRboNU3a7XQMHDiQsAT0IgQkAAMAEl+QARAW/36///u//1nvvvacLFy7o5ptv1kMPPSSXyyVJev/99/X666+rqalJqampuvfeezVy5EhJ0qJFi3To0KFLjjlz5szg5bn29nZt2rRJO3bskMfjUX5+vqZPn66MjIzg4//0pz/p5ZdfVktLi26//XbZbDbt2rVLS5cuVVpams6cOaO1a9fqo48+ksPhUHFxsSZNmiSHwyHp27VJs2bN0ooVK3To0CFt27ZNAwcO1COPPBLS198+7u8/FLexsVFr167VgQMHlJiYqFGjRum+++5TTEyMJKmlpUVr167V/v375fP5NGjQIE2bNk39+vXrnv8RAC6L88EAosKKFSt04MABPfDAA0pJSdGmTZv01FNP6dlnn9XRo0e1YsUK3XPPPRo+fLgOHjyo3/72txo0aJAyMjJUWloqr9erd955R8eOHVNpaakkhYSR1157TW+99ZYeeughpaam6n/+53/0xBNPaNmyZYqJiVFjY6PKy8s1ceJEZWZm6sUXX1ReXp7mz5+vpKQk+Xw+PfHEE2pvb9e//uu/qqWlRevXr9fp06f1i1/8IuR72bZtmz766CONHTtWubm5HZ5BW1ubnnzySd1www2aM2eOzpw5o9/97ncyDEP333+/JKmyslIHDhxQaWmpHA6H3njjDf32t7/Vk08+2Q3/FwBcCYEJQMSdOHFCu3fv1qOPPqpRo0ZJkpKSkrR582Z98803io2N1cMPP6yxY8fKZrOpb9++2rx5s6qrq5WRkRE8u/Lhhx8qISFBAwcODDm+z+fT//7v/2rixInBM05JSUl67LHHdPjwYd166606duyYEhMTNX78eEnSHXfcoZqaGuXn50uSqqqqVF9fr+eeey749eLi4vTcc8/p+PHjGjBgQPDr7du3T0899VSnPxz0gw8+UGNjo5544ongc48fP6733nsvGJiampqUnZ2t4cOHS5KysrJUX1/fqa8DoPMITAAi7vjx45KkgoKC4L4BAwYEz9ykpKTI5/Np3bp1+vzzz1VTU6P29nb5fL4OHd/tdsvv96uyslKVlZWX1G699Vb169dP586d02effabMzEwdPnxYgwYNCj7u6NGjSklJCbn0VVRUJEmqrq4OCUwlJSVd+iT12tpaXbhwQdOnT7+k1tbWJrvdrn/8x3/UihUr9PjjjysvL0+FhYUaMmRIp78WgM4hMAGIGoZhBP8eCAT0+eefy+Vyac+ePVq7dq3GjBmjH//4x8rPz9evf/3rTh//kUceUU5OTsi+5ORkSdINN9yglJQULVy4UIFAQLm5ufrpT396xf7+dvvvl4J25jLc30tJSdHcuXMv2W+zffs7OiNGjNCgQYP0ySef6LPPPlN5ebluvvlmLViw4JL+AHQffksOQMRdPDtz+PDh4L6mpib9+7//u44ePap3331XI0aMUGlpqX7wgx8oISFBLS0tlxwnNjb2smedXC6XHA6HvF6vBgwYoAEDBujGG2/Utm3bVFtbK+nbNU7f//739eKLL2rFihV68skn9b3vfS94jIEDB+rUqVM6efJkcN+BAwckXV1A+ltZWVn65ptvlJycHOyzpaVF27ZtU3t7uyTp5ZdfVmtrq8aNG6dZs2ZpxowZ+vjjj9XU1NQtPQC4PM4wAYi4fv366fvf/74qKyvV3t6u5ORkbdmyRRkZGbr11lv11ltv6ciRIzpw4IDOnDmjzZs3y+v16sKFCyHHyc3N1auvvqo9e/YoISFB9fX1uvvuuxUbG6t//ud/1muvvSaHw6Ebb7xR77zzjj788EPdd999kqT4+Hj93//9n/Lz85WcnCyfz6f09HTFxsZK+vbMzptvvqlnnnlGJSUl+stf/qL169dr+PDhIZfjrsbIkSO1ZcsWPfPMM5owYYLa2tpUWVmprKys4D2bjh8/ri+++EITJkxQbGys3n//fcXFxen666/vlh4AXB63FQAQFXw+n1555RW99957am9vV0FBgR566CGlp6eroaFBL7zwgr788kulpKRo7Nix2r17tzIzM/Xoo4+GHOf111/XW2+9pZaWFt166616/PHHJYXeVqClpUU5OTl64IEHlJeXJ+nbIPL4448Hz161t7fLbrdr8uTJuvvuuyVJZ86cUUVFhT766CPFxsaquLhYEydODIaq77pdwN/q6G0FYmNjNXz4cD3wwAO67rrrJElff/211q9frwMHDsjr9SorK0uTJk3Srbfe2j3/IwBcFoEJAPTt+qbi4mINHjxYdrtdf/nLX/Tmm2/q3LlzKisri3R7ACKMwAQAkv74xz9q+/btcrvd8vl8cjqdGjRokH76059ecpsCANceAhMAAIAJfksOAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADAxP8DwHkSxShCNBkAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[7]].hist(range=[0,10],bins = 10,color = color[1])\n",
    "plt.xlabel(colnm[7],fontsize = 12)\n",
    "plt.ylabel('用户数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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GhoatH37drtL61IOHz6svXv3atGiRSotLVVeXp4WL17MWtMw6NOnz2X7ouE1kcAUpZxO52WfaBobG8u/EiPk/fff11tvvaU5c+bI5eLNo+G2fv16ZWRkaOjQoXaX0uWdOXNGmZmZwS8Oj4mJUf/+/UMWz+Kr27lzp/Ly8pSZmalu3bppypQpOnXqlI4ePWp3aV1SNLwm8soQpTwej44dOxayr7GxkRfzCDh16pRKSko0c+ZMPk4gQnbs2KG6urrgO7aam5u1a9cuffrpp5o5c6a9xXUxycnJl72InD59WrfccotNFXVNbW1tqqurC243NjaqublZbW1tNlbVdUXDayKvvlEqMzMzZEFbTU2N/H5/8F+NCI+WlhYtWbJEI0aM0IgRI9TU1CRJiouLk8PhsLm6ruPJJ5/UhQsXgtsrV67U4MGD+RymCBg6dKh++ctfasuWLRo2bJh2796tyspKzZkzx+7SupTs7GwtW7ZMmzZtUmJiot5++2317NlT/fv3t7u0LikaXhMJTFEqJydHDQ0N2rZtm8aNG6cNGzYoNzdXTid3UcNp//79On78uI4fP6633347uP+FF17gA+jCqFevXiHb3bp1U0JCQlR8wXVX4/F49KMf/UgrV65UaWmpEhMTNWfOHK7nMBszZoxOnDihzZs369y5c+rfv78ee+wx7gJESDS8JvLlu1HsvffeU0lJieLj49XW1qaioiL169fP7rIAAIi4Bx98MOQfr3a/JhKYotzZs2dVUVGh7Oxs/jUOALiu2fmaSGACAAAwYEEMAACAAYEJAADAgMAEAABgQGACAAAwIDABAAAYEJgAWOrQoUN68MEHQ75W4npRVFSk3/zmN3aXAeAaEJgAAAAMCEwAAAAGBCYAAAADviUQgC327t2rdevWqa6uTsOGDdMjjzyiG264QdLF75BasGCBmpqatH79enXv3l1PPPFE8HdPnjypV199VYcOHZLH49GkSZOUn58vp9Opf/7nf9aoUaM0ZcoU/fjHP9b58+f13HPPadOmTdq4caOWL18uSdqyZYt++9vf6vTp00pOTtb999+vcePGBf+Mmpoavfbaazp48KBuuOEGjRs3Tg8++KBiYmLa/Rg3btyoTZs2qaWlRXfeeaf++osVKioqVFpaqs8++0zdu3fX2LFjNXXqVDkcDu3YsUMvvPCCXnzxRSUmJkqS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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[8]].hist(range=[0,10],bins = 10,color = color[1])\n",
    "plt.xlabel(colnm[8],fontsize = 12)\n",
    "plt.ylabel('用户数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户单击次数统计')"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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h0NOp1NHjx4NOKahoSFkY5cSGRl5UZC6gD8Y57XXPvh8vnZbe3tCn61Bn61Dr60Rzj43+640t9utjz766KL9LpcrYPvAgQNat26dTp06dcVznjhxQsXFxZo+fbrS0tIkSX379tWnn37qP6a6uloej0dOpzMkYwAAAM0ORidPntQTTzwRsG/r1q36yU9+os8//9y/r7y8XL///e/1+OOPf+X53G63lixZoiFDhmjIkCE6d+6czp07p/79+8vlcmnHjh2SpM2bN2vAgAGy2+3Kzs42fQwAAKDZl9L+9fJSU1OTVqxYoR07dig3N1ddunTxHzdmzBgNHDhQs2fP/srzffjhh6qsrFRlZaV++9vf+vcvX75cM2bMUHFxsdauXSuv16uFCxdKOr/g2+wxAACAZgcju93un2GpqqrS3r17lZubK5fLpT/96U8Bxx4+fPiKszFDhw7V22+/fcmx5ORkFRcX69ChQ8rKylJcXFzAz5k9BgAAOrZmBaOamhrV1dX5t3v06KFly5bpL3/5i1544QUdOHAg4Hi73a7c3NxWFZiQkKCEhATLxgAAQMcVdDD64x//qJKSEg0ePFiStG3bNt1www1KTExUXFyc+vXrp0WLFoWsUAAAgFALOhj16NFD06dP1/XXX685c+bol7/8pd566y3NmTNHTqdTBw8e1Pz58xUTE6Nrr71WQ4cOVWZmZihrBwAAMFXQwah3797q3bu36urq5HA49Pzzz2vbtm1aunSpcnNz1dTUpLy8PLlcLu3fv19bt27ViBEjNHPmzMs+JwgAAKAtaXZiaWxslNfrld1u15gxY5STk6OFCxfK5/PppptuUkJCgr773e/qH//4h5577jk9++yzeuihh0JROwAAgKma/QAfm82mtLQ01dbWSpLS0tL0ox/9SPfdd5+8Xq8kqba2VvX19VqwYIH27t2rgwcPmls1AABACDQ7GCUlJen//b//pwULFui1116T2+3WTTfdpJEjR+pnP/uZDh48KLvdruLiYnXv3l2LFi1S3759Q1E7AACAqZoVjP7yl7/I5XLJbrdr3Lhx2r17t+bNm6ePP/5Y0vnnDlVVVSkhIUGpqanav3+/+vTpE5LCAQAAzBb0GqOmpia9/PLLstvtmjx5su644w45HA799re/1eLFizVy5Eg5nU6dOHFCkjRgwADt3bvXf3s/AABAWxf0jFFERISWLl2qsWPHavXq1Xr88cd14sQJ9enTR0uXLtXRo0e1c+dOVVZWSjp/F9uHH34YqroBAABM16xLafHx8fre976nF198UdnZ2frNb36jY8eOKTk5Wf/zP/+jG2+8UfX19ZKkXr166dixY6qurg5J4QAAAGZr0QOGoqKi9MMf/lDdu3dXTEyMpPNf//Hggw/6n1nUs2dPPf7440pOTjavWgAAgBBq1ZMXR4wYEXiyf3mQY2RkpHJyclpzegAAAEs1+3Z96fxDHn/xi1/I7XZf8dg//OEP/ucbAQAAtGUtmjGy2Wx66623lJCQoMTERCUnJyspKUk2my3guH/+858qKSmRx+PRqFGjTCkYAAAgVFoUjCIiIiRJmzZt0qlTp9TQ0KDo6Gj169dPAwYM8H9n2pIlS9S/f39CEQAAaBdatcaoqKhI0dHRcrvdqqys1CeffKKdO3dqw4YN6tSpk/r166c5c+aYVSsAAEBIBb3GqLGxUc8++6zef/99nTlzRpL8l86ioqLUs2dPJSUlKSIiQj6fTzabTSkpKYqKigpN5QAAACYLesaorq5ODQ0NWr16tZYvXy5Jevvtt+X1enX48GF9+umnio+PV25urn784x/L7Xbr0UcfVWpqqm699daQfQAAAACzBB2MkpOT9eijj0qSjhw5og8//FB/+MMfVF5ertjYWM2cOVM333xzwM/MnDlTy5Yt09ChQ5WQkGBu5QAAACZr1u3677zzjiorK3X48GH99a9/VVFRkebOnavMzEx98MEH+v3vfy+XyyVJOnz4sKqqqnTdddfp97//fUiKBwAAMFOzFl+fOHFCCxYs0E033aTIyEhVVlbq9ddf11133aURI0Zo0qRJioqK0tixY3XixAl17dpV//3f/63ExMRQ1Q8AAGCaZs0YTZs2TS+88IIGDBggm82m3bt363vf+57y8vJkt58/1SOPPKLy8nLt2rVL119/vZKTk/1jAAAAbVnQM0Z79uzRyy+/LIfDIbfbrXPnzqmyslJer1eHDh1Sbm6uJCkzM1MTJ07UgQMH9Prrrys7O1uxsbEh+wAAAABmCToYpaenq6CgQA6HQwcPHtSWLVsUFRWlCRMm6NSpU3riiSckSbt379bJkyeVl5enL7/8Um+++aamT58esg8AAABglqCvcSUkJKh///7atm2b4uPjlZGRIafTqQ8++EBjx47VsmXLJElr1qzRm2++qeuvv175+fl6//339cUXX4SqfgAAANM0a/HPM888o27duikmJkYxMTH+9UQbN25Uly5dJJ1/Gvbdd9+t66+/XnFxcRo0aJC2b98ekuIBAADM1Ky70n76058qISFBn3zyiQYNGqTOnTtr1qxZ+tWvfiWfz6f09HTZ7faABzrecsstSk5ONr1wAAAAszUrGF14SGNmZqYyMzMlSf369VOfPn0UERGhoqKii37mxhtvNKFMAACA0DPlPvqIiIhL7j979qxOnjxpxlsAAACEXIuCUVlZmerr66943KZNm/TYY4+poaGhJW8DAABgqWZdSrugpKREdrtdWVlZ+uY3v6kxY8Zc9BDHyspKvfvuuxoxYoRiYmJMKRYAACCUWhSMpPNPwT5w4IDeeeedgMXW0vlLaE8//bRSUlI0ZcqU1taINuzOdR9f8Zgtk/pbUAkAAK3X4mA0ZMgQjR49+qL9X3zxhZYsWSKPx6NFixYpKiqqVQUCAABYpcXBSJLOnDmjhoYGXXPNNaqpqdGf/vQnvfPOO+rfv78WLFiguLg4s+oEAAAIuaCDkdfrvWgd0a5du/TKK6/4t202m6ZNm6Zvf/vb5lUIAABgkaCD0bp163Tq1Cndcccd/n3Z2dl65JFH1NjYqKqqKu3du1crV67UgQMHNG3aNBZdAwCAdiXoYNS1a1d9/PHHmjdvniTpL3/5i/Ly8tS9e3f/MePGjVNFRYVefPFFPfbYY1qwYIH/q0IAAADauqCfY/Sd73xHTz75pJYtW6bbb79dq1at0rx58/TRRx8FHJeWlqZFixYpJiZGRUVFamxsNL1oAACAUGj2Ax5TU1N1zz33aPny5crKytKzzz6rc+fOBRwTFRWluXPnqra2VmvXrjWtWAAAgFBq8VeCfPTRRyooKNCSJUsUFRWlNWvWqLq62j8eFxenSZMm6de//rXq6upMKRYAACCUmn27vsfj0auvvqodO3bo3nvv1ejRo1VRUaE///nP+vWvf60777xTd955p6KiojRixAh16tTJ/+WzAAAAbVmzglFNTY2efvppVVdXa86cOfrmN78p6fy6oueee047duzQxo0bVVZWpnvuuUff+MY3/McAAAC0dc0KRjt37pTX61VhYaGSk5MDxux2u0aNGqXhw4dr3bp1evbZZzVw4EAtWLBANpvN1KIBAABCoVnB6I477tCtt976lV/zERUVpalTpyo7O1v19fWEIgAA0G40e41RsN99xiU0AADQ3rT4rrQL3G63pk+frjNnzphRDwAAQNg0e8bI6/Vq7969ys7OVlRUlCIjI3XmzJmgZ5Iu58yZM5o/f74ef/xx//qllStX6t133/Ufk5KSohdeeEGSdOTIEZWUlKiqqkp5eXmaPHmy/7JdS8cAAEDH1qJg9NRTT+mll15S165d/aEiIiJCklRUVKSzZ89Kknw+n9xut5YsWfKV5zx9+rQKCwtVU1MTsP+zzz7T/PnzlZWVJUn+L7H1eDwqLCzUoEGDNHv2bJWWlqqsrEyjRo1q8RgAAECzL6U5HOez1IUg9O/69OmjrKwsZWVlqV+/fvrnP/95xXMuW7ZMw4cPD9jX1NSko0ePKicnR7GxsYqNjfV/Ke2ePXvkcrlUUFCg1NRU5efna/v27a0aAwAAaPaM0QWXu/z0gx/8wP/a7XbrnXfeueK5ZsyYoZSUFL3xxhv+feXl5fL5fJo3b57q6uqUk5OjmTNnKjExUeXl5crMzFR0dLQkKT09XRUVFf6fa8kYAABAi4NRMIJdu5OSknLRvsrKSvXs2VNTp05VXFycVq5cqVdeeUULFixQQ0ODkpKSAt7Hbrervr6+xWNOp/OiGjwejzweT8DxF2atzF6XdDWvc2pLn+1CLW2ppqsRfbYGfbYOvbZGW+iz6TNGZsnNzVVubq5/e9q0aXrggQfkcrlkt9sVGRkZcHxUVJTcbneLxy5l06ZN2rBhg387IyNDhYWFAeHKXPtDdN7w6tatW7hLuEhqamq4S+gQ6LM16LN16LU1wtnnoIPRihUrtG/fPv8C6EcffdT/WpIefPDBi8KSz+czqUwpNjZWPp9PX3zxhZxOp44ePRow3tDQIIfD0eKxSxk/frzGjRvn377w+WpqatTY2GjGx7ro3Fej48ePh7sEP5vNptTUVFVVVZn6+xOB6LM16LN16LU1QtVnh8MR9KRG0MHoG9/4hvr16ye73a6SkhLddttt6ty5sySppKREd95550ULshsbG/Xqq682o/T/s2rVKvXr10/Dhg2TJB08eFA2m01du3ZV3759AxZNV1dXy+PxyOl0tnjsUiIjIy+aYbqAPxjBa4u98vl8bbKuqw19tgZ9tg69tkY4+xx0MLrhhhv8r0tKSjR8+HBdc801/u1bbrnlopkXj8fT4mDUu3dvrV+/XvHx8fJ6vSotLdXIkSMVHR2t7OxsuVwu7dixQ7fccos2b96sAQMGyG63t3gMAAAgpIuvW+OWW25RZWWlli5dqk6dOmno0KHKz8+XdP5RATNmzFBxcbHWrl0rr9erhQsXtmoMAADA9GDU2Nh42TU7V/L2228HbE+cOFETJ0685LFDhw5VcXGxDh06pKysLMXFxbV6DAAAdGzNTjBffvmlpMuvG1mwYIHKy8tbV1WQEhISlJCQYOoYAADouFoUjNLS0uT1egP2X9iePHmy/44tr9d72VvhAQAA2ppmB6O4uDg988wz/u2mpiZJ5y+hRUVFaeDAgeZVBwAAYCFTbseaPHnyZb87DQAAoL1o9eLriIgI/ed//qcZtQAAAIRVSB7gc+TIEd1///2hODUAAEDIhCQY2e12nT59OhSnBgAACJkWXUqbMGHCJffbbDatXbtWdru9xc8yAgAACJegZ4xOnjwZsP3AAw/ooYcekiTNmTNH8+bN4/tjAABAuxb0tE5xcbHcbrcKCgokSQMHDvR/V9rXv/71y37ZKgAAQHsRdDD69re/rW3btunxxx8PZT24Ct257uMrHrNlUn8LKgEA4KsFHYxuvvlm3XzzzaqsrNSDDz6okydP+p9qffLkSf9zjGpra1VXVyefz6fa2lp5vV41Njaqe/fuofkEAAAAJmn2CukePXpIkh555BH/vjlz5vhfz5492//6X2/Zf+utt1pUIAAAgFWaHYwaGhokSYWFhfra176mWbNmadmyZYqIiNADDzyg4uJinTx5UkuXLtXTTz+tpqYmuVwu0wsHAAAwW9DB6NixY1qxYoWSk5MlSV26dPEvvu7SpYt/8XXXrl3935/WtWtXs+sFAAAImaBv1y8pKVF8fLy+//3vSzr/zKIL/vU1AABAexX0jNEjjzyizp07+7d/+ctfqlOnTpKkX/ziF7LbQ/IQbQAAAMsEHYz+NRRde+21OnjwoGw2m66//np9+umn8nq9yszMZPYIAAC0Wy363o6nnnrqK8ebmprk9XpbVBAAAEC4hOT6V3R0tL71rW+F4tQAAAAhE5JglJycrB/96EehODUAAEDIsGIaAADA0KI1RnV1dVq9erUcDof/bjSfz6empiZ961vf0pAhQ0wtEgAAwAotCkbnzp3Tzp07lZ6eLul8KDpy5Ij69+8vj8djaoEAAABWaVEwuqCoqEjS+aBUUFCg2bNnKyEhwZTCAAAArMYaIwAAAAPBCAAAwNCsS2ler1cffPCBYmNjQ1UPAABA2AQdjKqqqvTEE0/o5MmT+u53vxvCkgAAAMIj6GCUlJSkb33rWxo7dqzcbrc2bdoUyroAAAAsF/Qao4iICE2ePFlJSUl8USwAALgqsfgaAADA0KrnGNXW1kqSvvzyS0nnn4gdHx/vfxo2AABAe9KqYHT//fcHbD/66KNyOBzq1auXbrrpJo0ePVrXXHNNqwoEAACwSouCUXJysp599llFREQoIiJCdrtdHo9H9fX1qqur0yeffKKysjL94he/0KhRozRhwgR97WtfM7t2AAAAU7UoGDkcDvXo0eOy40OHDtWkSZO0fft2rV69Wp999pmeeuqpFhcJAABghVZdSvsqNptN//Ef/6GsrCydPHkyVG8DAABgmpAFowvS0tKUlpYW6rdBO3fnuo+veMyWSf0tqAQA0JE1Kxjt3LlTkZGRcjgcQT3LyOFwKCMjQ507d25xgQAAAFZpVjB6/vnnm/0G8fHxKi4uVnR0dLN/FgAAwErNvpS2evVqRUZGyufz6Z577tGaNWskSefOndPUqVP15ptv+o+tra3Vj3/8Y+3du1c33XSTeVUDAACEQLOD0YXb86XzC6wvvP73/5ekxMRE3XbbberWrZsZtQIAAIRUSBdf2+12TZkyJZRvAQAAYJqQf3eHx+MJ9VsAAACYotkzRpMmTQrYnjBhwlduS1JxcbFSUlKa+1YAAACWanYw+ulPfyqHwyGfz6dnnnlGc+fOlSS53W4999xzevjhh/3Her1eeTwexcfHm1YwAABAqDQ7GA0ePFgOx/kfs9vtGjx4sKTzd6VdGAcAAGiPQr7GCAAAoL1oM8HozJkzuv/++1VdXe3fd+TIET3yyCOaOnWq1qxZI5/PF9IxAADQsTU7GE2aNEkTJkzQhAkT5PF4/K8LCgokSdOnT9eiRYv09ttv68iRI0Gd8/Tp01qyZIlqamr8+zwejwoLC5WRkaHFixeroqJCZWVlIRsDAABo1hqjRx55RA6HQ3a7PeBBjl6vV01NTfryyy/1xRdfqLKyUrt379bGjRvVt29fTZo0STk5OZc977JlyzR8+HB9+umn/n179uyRy+VSQUGBoqOjlZ+fr9dff12jRo0KyRgAAECzgtENN9zQrJMfOnRIb731ltxu91ceN2PGDKWkpOiNN97w7ysvL1dmZqb/O9bS09NVUVERsjEAAICQPvn62muv1YIFC6543KWecdTQ0KCkpCT/9oWvH6mvrw/JmNPpvKgGj8cT8IBKm82mmJgY/2szmX2+q5EZPbpwDvodWvTZGvTZOvTaGm2hzyENRq1ht9sVGRkZsC8qKkputzskY5eyadMmbdiwwb+dkZGhwsLCgHBlrv0hOu/Vwczv3EtNTTXtXLg8+mwN+mwdem2NcPa5zQYjp9Opo0ePBuxraGiQw+EIydiljB8/XuPGjfNvX0iwNTU1amxsbPFnuxT+FXJlx48fb/U5bDabUlNTVVVVxR2JIUSfrUGfrUOvrRGqPjscjqAnNdpsMOrbt6+2b9/u366urpbH45HT6QzJ2KVERkZeNMN0AX8wrGdmz30+H7+GFqDP1qDP1qHX1ghnn9vMc4z+XXZ2tlwul3bs2CFJ2rx5swYMGCC73R6SMQAAgDY7YxQREaEZM2aouLhYa9euldfr1cKFC0M2hrbvznUfX/GYLZP6W1AJAOBqZfO18TnBuro6HTp0SFlZWYqLiwv5WDBqamoC7lYzg81m0x1rPzL1nB3RlYKRzWZTt27ddPz4cabDQ4g+W4M+W4deWyNUfY6MjGz/a4wuSEhIUEJCgmVjAACg42JxDQAAgIFgBAAAYCAYAQAAGAhGAAAABoIRAACAgWAEAABgIBgBAAAYCEYAAAAGghEAAICBYAQAAGAgGAEAABgIRgAAAAaCEQAAgIFgBAAAYCAYAQAAGAhGAAAABke4CwDMdOe6j694zO553SyoBADQHjFjBAAAYCAYAQAAGAhGAAAABoIRAACAgWAEAABgIBgBAAAYCEYAAAAGghEAAICBYAQAAGAgGAEAABgIRgAAAAaCEQAAgIFgBAAAYCAYAQAAGBzhLgCw2pCl2694zJZJ/S2oBADQ1jBjBAAAYCAYAQAAGAhGAAAABoIRAACAgWAEAABgIBgBAAAYCEYAAAAGghEAAICBBzwCl3Dnuo+veAwPgQSAqw8zRgAAAAaCEQAAgIFgBAAAYCAYAQAAGAhGAAAABoIRAACAoc3frr9y5Uq9++67/u2UlBS98MILOnLkiEpKSlRVVaW8vDxNnjxZNptNklo8BgAAOrY2P2P02Wefaf78+SotLVVpaamKiork8XhUWFiojIwMLV68WBUVFSorK5OkFo8BAAC06WDU1NSko0ePKicnR7GxsYqNjVVMTIz27Nkjl8ulgoICpaamKj8/X9u3b5ekFo8BAAC06Utp5eXl8vl8mjdvnurq6pSTk6OZM2eqvLxcmZmZio6OliSlp6eroqLC/zMtGQMAAGjTwaiyslI9e/bU1KlTFRcXp5UrV+qVV15RWlqakpKS/MfZbDbZ7XbV19eroaGhRWNOp/Oi9/d4PPJ4PAHHx8TE+F+biXVO7U8wXxvyy8nZFlTS9lz4/czv69Ciz9ah19ZoC31u08EoNzdXubm5/u1p06bpgQceUPfu3RUZGRlwbFRUlNxut+x2e4vGLmXTpk3asGGDfzsjI0OFhYUB4cpc+0N0XoRLt27dwl1CWKWmpoa7hA6BPluHXlsjnH1u08Ho38XGxsrn8yk+Pl5Hjx4NGGtoaJDD4ZDT6WzR2KWMHz9e48aN829fSLA1NTVqbGw04yNddG5cXY4fPx7uEsLCZrMpNTVVVVVV8vl84S7nqkWfrUOvrRGqPjscjqAnNdp0MFq1apX69eunYcOGSZIOHjwom82mXr16BSyarq6ulsfjkdPpVN++fVs0dimRkZEXzTBdwB8MBKOj/z7x+XwdvgdWoM/WodfWCGef2/Rdab1799b69eu1f/9+7du3T6WlpRo5cqQGDRokl8ulHTt2SJI2b96sAQMGyG63Kzs7u0VjAAAAbXrG6JZbblFlZaWWLl2qTp06aejQocrPz1dERIRmzJih4uJirV27Vl6vVwsXLpSkFo8BAADYfO14TrCurk6HDh1SVlaW4uLiTBkLRk1NTcDdamaw2Wy6Y+1Hpp4T4bdlUv9wlxAWNptN3bp10/Hjx7nsEEL02Tr02hqh6nNkZOTVscboShISEpSQkGDqGGCmYG7p76jhCQDaIhbXAAAAGAhGAAAABoIRAACAgWAEAABgIBgBAAAYCEYAAAAGghEAAIChXT/HCLga8KwjAGg7mDECAAAwEIwAAAAMBCMAAAADwQgAAMDA4mugHWCBNgBYgxkjAAAAA8EIAADAQDACAAAwsMYIuEqwDgkAWo8ZIwAAAAPBCAAAwEAwAgAAMLDGCOhAWIcEAF+NGSMAAAADwQgAAMBAMAIAADCwxghAANYhAejImDECAAAwMGMEoNmCmVXaPa+bBZUAgLmYMQIAADAQjAAAAAxcSgMQEkOWbr/iMSziBtDWEIwAhA13wAFoawhGANo0whMAK7HGCAAAwEAwAgAAMHApDUC7x+U2AGYhGAHoEAhPAILBpTQAAAADM0YAYGBWCQDBCACagfAEXN24lAYAAGBgxggATMasEtB+EYwAIAyCCU/B2D2vmynnAXAewQgA2rFgvqw3GMxgAecRjAAAXP4DDAQjAEBQzLr8JxGy0HYRjAAAljMrZBGwYDaCEQCg3SJgtS/B/HqF+4aCDhmMjhw5opKSElVVVSkvL0+TJ0+WzWYLd1kAgDAJLmB9ZMp7WRnCWDvWfB0uGHk8HhUWFmrQoEGaPXu2SktLVVZWplGjRoW7NABAB2DmWi0zMOsWqMMFoz179sjlcqmgoEDR0dHKz8/X66+/TjACAKAV2lrga6kO95Ug5eXlyszMVHR0tCQpPT1dFRUVYa4KAAC0BR1uxqihoUFJSUn+bZvNJrvdrvr6ejmdzoBjPR6PPB5PwLExMTFyOMxvm81mU1ay88oHAgBwlYuMjJTP5zPtfM3573aHC0Z2u12RkZEB+6KiouR2uy86dtOmTdqwYYN/e/jw4Zo9e7a6dOkSktrWFiSG5LwAALQniYnh++9hh7uU5nQ6dfr06YB9DQ0Nl0yT48eP1xtvvOH/37333hswg2SmhoYGPfzww2poaAjJ+XEefbYGfbYGfbYOvbZGW+hzh5sx6tu3r7Zv/7/vFqqurpbH47noMpp0firv32eXQsXn8+mf//ynqVOHuBh9tgZ9tgZ9tg69tkZb6HOHmzHKzs6Wy+XSjh07JEmbN2/WgAEDZLd3uFYAAIB/0+FmjCIiIjRjxgwVFxdr7dq18nq9WrhwYbjLAgAAbUCHC0aSNHToUBUXF+vQoUPKyspSXFxcuEtSZGSkfvCDH1h26a6jos/WoM/WoM/WodfWaAt9tvm4YAoAACCpA64xAgAAuByCEQAAgIFgBADtyJkzZ3TgwIGLnscGwBwdcvF1W3PkyBGVlJSoqqpKeXl5mjx5smw2W7jLuiqcOXNG8+fP1+OPP67k5GRJ9DsUdu/erVWrVqm2tlZ9+vTRrFmzlJaWRq9N9sc//lGvvfaakpKSdOzYMd13330aPnw4fQ6hJ598UsOHD9fIkSPps8lWrlypd99917+dkpKiF154Iex9ZsYozDwejwoLC5WRkaHFixeroqJCZWVl4S7rqnD69GktWbJENTU1/n3023xVVVV66aWXNHHiRL388stKTEzUihUr6LXJzp49q5UrV2rRokUqKirSjBkztG7dOvocQu+//77+9re/SeLvjlD47LPPNH/+fJWWlqq0tFRFRUVtos8EozDbs2ePXC6XCgoKlJqaqvz8/IAnc6Plli1bpuHDhwfso9/mq6ysVH5+voYNG6b4+HiNGTNGhw4dotcma2ho0JQpU9SrVy9JUnp6us6ePUufQ6S+vl6rV69W9+7dJfF3h9mampp09OhR5eTkKDY2VrGxsYqJiWkTfeZSWpiVl5crMzNT0dHRks7/ZVdRURHmqq4OM2bMUEpKit544w3/PvptvhtvvDFg+9ixY0pNTaXXJktMTFRubq4kqbGxUVu3btXQoUPpc4isXr1aQ4cO9X/BOH02V3l5uXw+n+bNm6e6ujrl5ORo5syZbaLPzBiFWUNDg5KSkvzbNptNdrtd9fX1Yazq6pCSknLRPvodWhf+gz1mzBh6HSKHDx/Wvffeq7/97W+aMmUKfQ6Bffv2ae/evZo0aZJ/H302V2VlpXr27KnZs2frueeeU0REhF555ZU20WeCUZjZ7faLnvAZFRXl/1cKzEW/Q2v9+vXq1KmTRo8eTa9DJD09XY899ph69uypl156iT6bzO1269VXX9W9996rzp07+/fTZ3Pl5ubqySefVN++fZWcnKxp06bpb3/7m7xeb9j7TDAKM6fTedFttw0NDXI4uMoZCvQ7dP7+97/rvffe0+zZs+VwOOh1iNhsNmVkZGjWrFn685//TJ9NtnHjRl177bUaPHhwwH76HFqxsbHy+XyKj48Pe5/5FQ2zvn37Biwsq66ulsfjkdPpDGNVVy/6HRonTpxQcXGxpk+frrS0NEn02mz79u3Tnj17dPfdd0s6/4XYktSjRw/6bKI//OEPOn36tKZMmSJJ+vLLL7Vz504lJSWpqanJfxx9bp1Vq1apX79+GjZsmCTp4MGDstls6tWrV9h/PzNjFGbZ2dlyuVzasWOHJGnz5s0aMGCA7HZ+aUKBfpvP7XZryZIlGjJkiIYMGaJz587p3Llz6t+/P702Uffu3bVt2zZt27ZNtbW1WrdunQYOHKjBgwfTZxP97Gc/0zPPPKOioiIVFRXppptu0l133aVFixbRZxP17t1b69ev1/79+7Vv3z6VlpZq5MiRGjRoUNj7zJfItgG7du1ScXGxYmJi5PV6tXDhQvXs2TPcZV017rrrLi1fvtz/gEf6ba5du3bp6aefvmj/8uXLdfjwYXptog8//FCrVq1SXV2dBg0apOnTpysuLo7f0yH04osv6rrrrtPIkSPps8l+/vOf67333lOnTp00dOhQ5efnq1OnTmHvM8Gojairq9OhQ4eUlZWluLi4cJdz1aPf1qHX1qDP1qDP1ghnnwlGAAAABi6OAgAAGAhGAAAABoIRAACAgWAEAABgIBgBAAAYCEYAcAn333+/ysrKLjv+4osv6sUXX2z2ecvKynT//fe3ojIAocRXggBAC/zXf/1XuEsAEAIEIwBogQtPUgdwdeFSGgAAgIEZIwCWaWpq0ltvvaXf/e53OnfunAYOHKipU6cqMTFRCxcuVE5OjhITE7Vx40bV19dr8ODBuu+++xQVFSVJOnz4sFatWqVPPvlEXbp00W233abbb7+9WTVs27ZNW7Zs0eeff660tDRNnDhRAwcObPZnubC+6FLrhZrzHv/7v/+r5cuXa86cORoyZIgkqaamRqWlpfroo48kSdddd52mT5+u+Pj4ZtcJoHmYMQJgmVdeeUW/+c1vNGHCBM2ZM0e1tbVauHChXC6XJGn37t3asmWLCgoKdM899+iDDz7Q9u3bJUlnzpzRz372MzmdTj366KMaN26c1qxZ4x8Pxm9+8xu9+uqrys3N1YIFC5SRkaHCwkJVVlaa9hmb8x579+7Viy++qB/96Ef+UCSdD11VVVWaPXu2Zs2apePHj+uNN94wrUYAl8eMEQBLVFdXq6ysTPfee69Gjx4tSUpPT9dPfvIT/91fx48f17Jly9S1a1dJ0q5du3T48GFJ0q9+9SvZ7XbNnj1bDodDOTk52rdvn3bs2KG8vLygati4caNuueUW3XXXXZKkzMxMnT17VjU1NerRo4cpnzPY9/jss8/09NNP6/vf/75GjBgRcI6amhrdcMMNuuGGGyRJ3bt316lTp0ypD8BXIxgBsMShQ4fk8/kCLil17dpV3bp108GDByVJQ4YM8YciSYqLi1NTU5Mk6ciRIzp9+rQmTpwYcN4uXboE9f6nTp3S559/rpycHP8+h8OhBx98sMWfqaXv4XK5tHjxYkVHR6u8vPyi84wdO1br1q3TsWPH1K9fPw0YMEADBgwwrU4Al0cwAmAJn893yf02m83/OiUl5SvP0bdvX82YMSNgn90e3IqAy71/eXm5IiMj1b1796DOY8Z7nD17Vt/5zneUl5enhx56SB9//LH69+/vP/6OO+7Q17/+de3bt08fffSRtm7dqpEjR2rmzJmtrhHAV2ONEQBLXHvttbLZbNq3b59/X11dnY4dO6Zrr71W0leHnF69eqm2tlY9evRQ79691bt3bx07dkzvvfdeUO8fHx+vLl26+Bc0S+eDTFFRkbZt29bCT9Wy90hISNCUKVPUq1cv5ebmatWqVf5Q9eWXX+qNN95QbGysbrvtNj344IO666679Lvf/c4/ewYgdJgxAmCJlJQUjRw5UmvWrJHX61VCQoLefvttdenSRaNGjdLu3bu/8udvvfVW/epXv9Lzzz+vW2+9VadOndLKlSt18803B13D9773PZWWliopKUk5OTnauXOnPv/8c40cObKVn6557xEREeF/PWHCBM2ePVvvv/++RowYoejoaO3Zs0e1tbUaO3asfD6fdu/ercTExICfAxAaBCMAlpkxY4auueYarV+/3n+7/ty5c9W5c+cr/mxcXJwee+wxrV69WkuWLJHT6VReXp5++MMfBv3+Y8eOVUREhLZs2aItW7aoV69eWrBggXr16tWaj9Wq90hMTNTYsWP185//XN/4xjcUHR2thx9+WKtXr9bzzz8vt9utvn37au7cuabVCODybL7LXRQHgHbkSpeZmG0BEAxmjAC0e9XV1XrggQe+8pjXXntNcXFxFlUEoL1ixghAu9fY2KiKioqvPKZXr15B38EGoOMiGAEAABj45xMAAICBYAQAAGAgGAEAABgIRgAAAAaCEQAAgIFgBAAAYCAYAQAAGAhGAAAAhv8P7qyzCI3jOFkAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[9]].hist(range=[0,50],bins = 50,color = color[1])\n",
    "plt.xlabel(colnm[9],fontsize = 12)\n",
    "plt.ylabel('用户单击次数统计')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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Yg3x6QhMIXbgwAEtW7ZM5eXlGjNmjCZOnCjLslo8Z9euXXr55Zd1/PhxZWRkaPz48e3U29A6n1p19jef1oSAzjqujh8/rpycHFVWVto+59tvv9VTTz2l7t27Szr1KdvO4nxCQGccW+Xl5Vq6dKmmTZum9PR05eXl6cUXX9Qf//jHFs/rrGPrf/7nf/TKK68oLi5Ohw4d0v33368RI0a0eE57jyum5ELI6/UqJydHKSkpys7OVklJiTZu3NjiOc1v7iNGjNBjjz2mDz/8UDt37myfDofQ+dRK+v83n/z8fOXn52vWrFnB72wHcPz4cS1cuNB2COis40qSFi9ebHxj/kdHjx6Vz+dT7969FRUVpaioKEVERASxhx1Hcwi466679MILL6hHjx568cUXWzyns46t0tJSZWZmavjw4YqJidG4ceNUVFTU4jmddWx9//33ysvL04IFC7Ro0SJNnz5dq1atavGcUIwrAlMIbd++XbW1tcrKypLH41FmZmbA08bP5sMPP1S3bt10++23KyEhQXfccYfxnEvB+dSqs775SK0PAZ11XEnS9OnT9Ytf/ML28V9//bWampr0r//6r/rNb36jP/3pT6qpqQliDzuO8wkBnXVsDRo0SOPGjfNvHzp0SB6Pp8VzOuvYqqur07333qvevXtLkpKTk/X999+3eE4oxhWBKYSKi4uVlpam8PBwSacGSUlJifGca665xj8VlZqaqm+//TbofQ2186lVZ33zkVofAjrruJKk+Pj4Vh1fVlamPn36aO7cucrOzlZlZaVef/31IPWuYzmfENCZx1azxsZGbdiwIaB2Z9NZx1aPHj00atQoSf9fq6FDh7Z4TijGFYEphOrq6hQXF+fftixLDoejxX/Ua2trA9ajREZGqqqqKqj97AjOp1ad9c1Han0I6Kzj6nzcdtttevTRR5WUlKTExETdfffd2rJlS6i71e7shgDGlrR69WpFRERo7NixLR7X2cfW/v37NW3aNH3++ee69957Wzw2FOOKwBRCDofjjKeWdunSRQ0NDec8JywsTE6n0/bxl4rzqVVnf/Npjc46rtpC165dVV1dLa/XG+qutCu7IaCzj60vvvhC7733nmbOnBlQBzs629hKTk7Wf/zHfygpKUlLly5t8dhQjCsCUwi53W4dP348YF9dXV2L/1Gdfo7p+EvF+dTqdJ3tzac1Ouu4Oh9PP/209u7d698uKipSTExMp/p6i9aEgM48tg4fPqzc3FxNnTrV+ElCibFlWZZSUlI0Y8YMffLJJy3OIIRiXBGYQig1NVX79u3zb1dUVMjr9crtdp/znL59+wacs3//fsXGxga1nx3B+dSqs7/5tEZnHVctqa2tVWNj4xn7k5OTVVBQoH379unTTz/VG2+8YZyWupS0NgR01rHV0NCghQsXasiQIRoyZIjq6+tVX18vn8/H2DrNzp07tWLFCv9286MUHI5zR5RQjCsCUwj1799ftbW12rRpkyRp/fr1GjBggBwOxzn/gxo8eLD27NmjnTt36uTJk9qwYYOuvfba9u56uzufWnXWN5+WMK7smzVrVsAzvJrddtttSkxM1GOPPably5dr3LhxysjICEEP29/5hIDOOrZ27Nih0tJSffDBB7rnnnv8/6usrGRsnaZXr156//339f777+vIkSNatWqV/umf/kldu3btUOOKL98Nsa1btyo3N1eRkZFqamrS/PnzlZSUpAceeEBZWVln/aTAX/7yFy1fvlxdu3ZVRESEHn/8ccXExLR/59tZa2vV2Niol19+WVu2bFF0dLRuuOEGZWRkdJoHwUnSnXfeqSVLlvgXRzKucCG2bt2qp5566oz9S5Ys0YIFCxhbOG87duxQQUGBqqqqdO2112rq1KmKjo7uUO9ZBKYOoKqqSkVFRerXr5/tx8GXl5erpKRE6enp6tq1a5B72HGcT61gX2cdVwg+xhaCoT3HFYEJAADAgDVMAAAABgQmAAAAAwITAACAAYEJAADAgMAEAABgQGACEFTz58/Xn//851B3Q9KpJ8TfeeedqqioCHVXAFxkCEwAOo3Y2FhlZ2df8l/NsX//fv3Xf/1XqLsBXFIITAA6DafTqb59+17yX/66f/9+vfPOO6HuBnBJITABAAAYXNp/ZgEIupqaGi1fvlw7duxQQ0ODrrrqKk2ZMkW9evUKOK6wsFBvvvmmampqNHDgQN1///3q0qWLJKmsrEz5+fn66quv5Ha7/V866nA49NVXX2nBggWaPHmy3n77bdXX12vQoEGaPHmy/6sQ7rzzTt1+++369NNPVVZWptTUVE2ZMkWJiYkBfaioqNCDDz4Y8P16krRx40atWbNGc+fO1YsvvqiioiJ5PB7df//96tu3ryTJ6/UqPz9fmzdvVlRUlH76059q69at6tq1q+bOnWurVkeOHNHy5cv1+eefKzIyUkOHDtXEiRMVEREhSWpqatLq1av117/+Vd9//72uvPJKTZo0SX369PFfY/78+UpPT9fw4cO1cuVK7dmzR3l5eXI4HHr++ef9X1DdXBdJuuOOO/w/+3w+vfnmmyosLNTx48eVkJCgu+66Sz/60Y9svQags+IOE4ALUlBQoC+//FLTp0/X7373O508eVLPP/98wDHbtm3T22+/raysLN1zzz3asmWLCgsLJUnfffed5s2bp7q6Os2aNUu33nqr1q9fr5UrVwZc46233tJvfvMbTZs2TV988YWWLl0a0L5+/XqNHDlSDz/8sBobG/XYY4+poaHB9uuor6/X448/rmuvvVa///3vJUkvv/yyv33Dhg36/PPPNXPmTP3sZz/TqlWr9Itf/EKZmZm2r79gwQIdPnxYv/vd7zR58mRt27ZNr776asBr2LBhgyZMmKA5c+aoW7duevbZZ8+4VkVFhebPn6/u3btrwoQJsixLkvSrX/1K2dnZuuOOO9StWzdlZ2crOztbY8eO9Z+7adMmrVmzRrfeeqvmzJmjtLQ0Pf3006qpqbFdK6Az4g4TgAtSWVmp5ORk/7eJJyUlqaSkJOCYsrIyLV68WN27d5d06lvv9+/fL+nUN46fOHFCv//973XZZZfpuuuuU2Njo15//XXddttt/mtMnDhRw4cPlySdOHFCy5Yt09GjR/3X/PGPf6xbbrlFkpSQkKDf/va3+vjjjzVq1Chbr6O6uloZGRkaP368JOn2229Xbm6uv33v3r0aNmyYrrvuOl133XV6++235fP5Au7+tORvf/ubKisrlZub67+71djYqC+//NJ/THJysh5++GENHjxY0qm7d1u2bNF3332nyy+/3H/cX//6Vz300EO6/vrrA35Hz5491bNnTx08eNC/Xut0FRUVioyM1JgxY+RyudS3b18NHDhQDgd/PwMtITABuCA//elPtWTJEs2dO1dpaWlKT0/XoEGDAo4ZMmSIP9hIUnR0tE6ePClJKioq0pVXXqnLLrvM337NNdfo5MmT2r9/v8LCwiRJ/fr187c3B4HDhw/7r/uP7fHx8brssstUXl5u+3VYlqVx48adtY+SdMUVV2j37t2qqalRSUmJqqurz5jya8n+/fvVvXv3gKnAkSNHauTIkf7tH/3oR9qyZYuWLl2qvXv3qqysTNKpgPiPrrvuujPCkl0jR47UX/7yFz300EO65pprdNVVV+n6668P+je9Axc7/qQAcEFGjBihxYsX68Ybb1R1dbVyc3OVnZ0tn8/nPyY+Pr7FazRPKTU7292Of7xe88+nn/ePmpqaWmw/XWxsrH9N1dkkJyfrwIEDmjx5subNm6fbb79dV155pe3r/2P/m33//ffas2ePf+pw8eLFevXVVxUbG6u77rpL2dnZZ71Wamqq7d97ul69emnx4sWaMGGCXC6X1qxZo4ceekjHjx8/72sCnQGBCcAFWbVqlerr6zV27Fg9+OCDuu+++/T555+rsrLSf0xL0z19+/bV/v37A9bQfPnllwoLCwsIJHv27PH//PXXX8uyLHk8Hv++3bt3+38uKyvT999/r4SEBNuvo6U++nw+5eXl6fHHH1dubq7y8vL0q1/9yva1JSklJUVHjx4NeGjm1q1bNW/ePDU2Nqq2tlabN2/W3XffrQkTJmjo0KHnHWJcLtc512998MEH2rVrl0aMGKHJkyfriSeeUFVVlT799NPz+l1AZ8GUHIALsn//fu3du1cZGRnq0qWLPvzwQ4WHhwesuWnJTTfdpPfff1+LFi3SL3/5S5WXl+vPf/6zfv7znys6Otp/3Ouvv+6/A7R69Wpdf/316tatm7/9o48+UmJiopKTk7VmzRp1797dv67qQlmWpS5duuidd97RyJEjVVdXp6ioKMXFxdm+izVy5EitX79eTz31lCZMmKCGhgatWbNGw4cPV9euXdXY2Kjw8HB98sknSkhIUFFRkdauXSvp1N2y1ujTp4+qq6v1/vvvKyEhQfv27dMtt9wih8Oh48ePa82aNWpsbFT37t31ySefSDLfBQQ6OwITgAsyY8YMrVixQs8//7zq6uqUlJSk2bNnKzw83Nb5l19+uRYsWKC8vDw9+eSTcrvduvXWW/XLX/4y4LgJEyZo1apV+u677zRw4EBNmzYtoP3222/Xli1b9MYbbyglJUWzZ8+Wy+Vqs9c5cuRIFRYWavPmzaqvr5fP51NcXJzmzp17xiMUziYiIkLz589Xfn6+nn32WXXt2lXDhg3ThAkTJJ16qObMmTO1cuVKPfHEE+rdu7emTZumJUuWaM+ePQF300wSEhI0ffp0rVmzRseOHVOvXr38C+JvueUW1dXVadWqVTp27JhiY2M1efJkpaenn19hgE7C8p1tYh0AOojm5zC98sorAXec/tGdd9551k+NtZUvv/xSzzzzjO6//35169ZNPp9Phw8f9k/N/exnPzvrGqVmlmXxKTTgIscdJgAwSE1N1fXXX6+CggIdO3ZMktSjRw+NHj1aY8aM0bJlywIeGHm6m266SVOmTGmn3gIIBu4wAcAFOnLkSIsPfoyOjr7kv/AXuNQRmAAAAAyYVAcAADAgMAEAABgQmAAAAAwITAAAAAYEJgAAAAMCEwAAgAGBCQAAwIDABAAAYPB/5VgQQgLLL0AAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[10]].hist(range=[0,3],bins = 3,color = color[1])\n",
    "plt.xlabel(colnm[10],fontsize = 12)\n",
    "plt.ylabel('用户数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAGvCAYAAACpXIpyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA32ElEQVR4nO3de1RU973//9ceZgTKhCJyGSyKpChCDtHjhSYa6qWuZDXxJMez0jRUE2JVPDHJYp22NsT2W217rKJN02CqjWlAvCzpqananKauJqGY5uRmEqL1lihWBATBUKNkQAaZ3x+W+YV42RuccUZ5PtbKCnu/93z4zHv26Mu99+wxvF6vVwAAALgkW7AnAAAAEOoITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACYITAAAACbswZ7A9eYf//iHOjs7/TpmfHy8mpub/Trm9YpeWUeveod+WUevrKNX1gWqV3a7XQMHDjTfzu+/uZ/r7OyUx+Px23iGYfjG5Wv/Lo9eWUeveod+WUevrKNX1oVCrzglBwAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYILABAAAYMIe7AkAVtyz6aDFLQ8EdB7Bsn3myGBPAQD6NY4wAQAAmCAwAQAAmCAwAQAAmCAwAQAAmCAwAQAAmCAwAQAAmAj6bQV27dqlsrIynTx5UjfeeKMWLFig5ORkHTt2TGvWrFFjY6OmTp2qWbNmyTAMSbrqNQAA0L8F9QhTY2OjVq9erW9961v69a9/rbi4OD377LPyeDwqKipSamqqli1bprq6OlVWVkrSVa8BAAAENTDV19crNzdXEyZMUExMjG6//XZVV1erqqpKbrdbeXl5crlcys3NVUVFhSRd9RoAAEBQT8mNHTu2x/Lx48flcrlUU1OjESNGKDw8XJKUkpKiuro6SbrqNQAAgKBfw9Sts7NTL774ou666y41NTUpPj7eVzMMQzabTa2trWpra7uqNafTedH5ejweeTyeHo+JjIz0/ewv3WNxPVX/5u/Xn/2qd+iXdfTKOnplXSj0KmQCU3l5uSIiIjRt2jSVl5fL4XD0qA8YMEAdHR2y2WxXtXYpW7du1ZYt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AADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADAhD3YE5CkM2fOqLCwUIsXL1ZCQoIkadeuXSorK9PJkyd14403asGCBUpOTpYklZSUaMeOHb7HJyYmatWqVZKkY8eOac2aNWpsbNTUqVM1a9YsGYZxRTUAANC/Bf0I0+nTp7V8+XI1Nzf71jU2Nmr16tX61re+pV//+teKi4vTs88+66sfOXJEhYWFKi0tVWlpqVasWCFJ8ng8KioqUmpqqpYtW6a6ujpVVlZeUQ0AACDogenpp5/WxIkTe6yrr69Xbm6uJkyYoJiYGN1+++2qrq6WJJ07d061tbXKzMxUVFSUoqKiFBkZKUmqqqqS2+1WXl6eXC6XcnNzVVFRcUU1AACAoJ+Sy8/PV2JiotatW+dbN3bs2B7bHD9+XC6XS5JUU1Mjr9erhQsXqqWlRZmZmZo/f77i4uJUU1OjESNGKDw8XJKUkpKiuro63+P6UrsUj8cjj8fjWzYMwxfc/Hkqr3ssTg/2b/5+/dmveod+WUevrKNX1oVCr4IemBITEy9b7+zs1Isvvqi77rpL0vmjT0OGDNHs2bMVHR2tkpISrV27VosWLVJbW5vi4+N9jzUMQzabTa2trX2uOZ3Oi85r69at2rJli285NTVVRUVFPcbxp+7A2H8dCPYEgiopKSkg47Jf9Q79so5eWUevrAtmr4IemMyUl5crIiJC06ZNkyTl5OQoJyfHV58zZ44effRRud1u2Ww2ORyOHo8fMGCAOjo6+ly7lBkzZmj69Om+5e7U29zcrM7Ozr492YswDEMul0uNjY3yer1+GxfXloaGBr+Ox37VO/TLOnplHb2yLpC9stvtlg52hHRg2rNnj15++WUtXbpUdvvFpxoVFSWv16tTp07J6XSqtra2R72trU12u73PtUtxOBwXhKxugdjxvV4vb6h+LFCvPftV79Av6+iVdfTKumD2KugXfV/KiRMnVFxcrLlz5/puJyBJZWVleuONN3zLhw8flmEYGjRokNLS0nTo0CFframpSR6PR06ns881AACAkAxMHR0dWr58ucaPH6/x48ervb1d7e3t8nq9GjZsmMrLy7V//37t3btXpaWlmjx5ssLDw5WRkSG3262dO3dKkrZt26asrCzZbLY+1wAA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AADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADAhD3YE7ickpIS7dixw7ecmJioVatW6dixY1qzZo0aGxs1depUzZo1S4ZhSFJAagAAoH8L6SNMR44cUWFhoUpLS1VaWqoVK1bI4/GoqKhIqampWrZsmerq6lRZWSlJAakBAACEbGA6d+6camtrlZmZqaioKEVFRSkyMlJVVVVyu93Ky8uTy+VSbm6uKioqJCkgNQAAgJA9JVdTUyOv16uFCxeqpaVFmZmZmj9/vmpqajRixAiFh4dLklJSUlRXV+d7jL9rAAAAIRuY6uvrNWTIEM2ePVvR0dEqKSnR2rVrlZycrPj4eN92hmHIZrOptbVVbW1tfq85nc6Lzs/j8cjj8fR4TGRkpO9nf+kei+up+jd/v/7sV71Dv6yjV9bRK+tCoVchG5hycnKUk5PjW54zZ44effRRDR48WA6Ho8e2AwYMUEdHh2w2m99rl7J161Zt2bLFt5yamqqioqIewcufXC5XQMa9dhwI9gSCKikpKSDjsl/1Dv2yjl5ZR6+sC2avQjYwfV5UVJS8Xq9iYmJUW1vbo9bW1ia73S6n0+n32qXMmDFD06dP9y13p97m5mZ1dnb26TlejGEYcrlcamxslNfr9du4uLY0NDT4dTz2q96hX9bRK+volXWB7JXdbrd0sCNkA1NZWZmGDx+uCRMmSJIOHz4swzA0dOjQHhdkNzU1yePxyOl0Ki0tze+1S3E4HBccleoWiB3f6/XyhurHAvXas1/1Dv2yjl5ZR6+sC2avQvZTcsOGDVN5ebn279+vvXv3qrS0VJMnT9aoUaPkdru1c+dOSdK2bduUlZUlm82mjIwMv9cAAABC9gjTpEmTVF9fr5UrVyoiIkLZ2dnKzc1VWFiY8vPzVVxcrI0bN6qrq0tLliyRpIDUAAAADO81ehywpaVF1dXVSk9PV3R0dMBrVjU3N/f49NyVMgxDSUlJamho6NeHbO/ZdDDYUwiq7TNH+nU89qveoV/W0Svr6JV1geyVw+G4tq9hMhMbG6vY2NirVgMAAP0XF+kAAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYIDABAACYsAd7AgDM3bPpYABGPRCAMQNj+8yRwZ4CgH6OI0wAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAm7MGewOXs2rVLZWVlOnnypG688UYtWLBAycnJKikp0Y4dO3zbJSYmatWqVZKkY8eOac2aNWpsbNTUqVM1a9YsGYZxRTUAANC/hewRpsbGRq1evVrf+ta39Otf/1pxcXF69tlnJUlHjhxRYWGhSktLVVpaqhUrVkiSPB6PioqKlJqaqmXLlqmurk6VlZVXVAMAAAjZwFRfX6/c3FxNmDBBMTExuv3221VdXa1z586ptrZWmZmZioqKUlRUlCIjIyVJVVVVcrvdysvLk8vlUm5urioqKq6oBgAAELKn5MaOHdtj+fjx43K5XKqpqZHX69XChQvV0tKizMxMzZ8/X3FxcaqpqdGIESMUHh4uSUpJSVFdXZ0k9bl2KR6PRx6Px7dsGIYvuPnzVF73WJweRH8W7P2f96F19Mo6emVdKPQqZAPTZ3V2durFF1/UXXfdpfr6eg0ZMkSzZ89WdHS0SkpKtHbtWi1atEhtbW2Kj4/3Pc4wDNlsNrW2tva55nQ6LzqnrVu3asuWLb7l1NRUFRUV9RjHn1wuV0DGvXYcCPYEEERJSUnBnoIk3oe9Qa+so1fWBbNX10RgKi8vV0REhKZNmya73a6cnBxfbc6cOXr00Ufldrtls9nkcDh6PHbAgAHq6Ojoc+1SZsyYoenTp/uWu1Nvc3OzOjs7+/xcP88wDLlcLjU2Nsrr9fptXOBa0tDQENTfz/vQOnplHb2yLpC9stvtlg52hHxg2rNnj15++WUtXbpUdvuF042KipLX69WpU6fkdDpVW1vbo97W1ia73d7n2qU4HI4LQla3QOz4Xq+XNxT6rVDZ93kfWkevrKNX1gWzVyF70bcknThxQsXFxZo7d66Sk5MlSWVlZXrjjTd82xw+fFiGYWjQoEFKS0vToUOHfLWmpiZ5PB45nc4+1wAAAEI2MHV0dGj58uUaP368xo8fr/b2drW3tyslJUXl5eXav3+/9u7dq9LSUk2ePFnh4eHKyMiQ2+3Wzp07JUnbtm1TVlaWbDZbn2sAAAAhe0rugw8+UH19verr6/Xqq6/61j/zzDM6fvy4Vq5cqYiICGVnZys3N1eSFBYWpvz8fBUXF2vjxo3q6urSkiVLrqgGAABgeK/DE6ctLS2qrq5Wenq6oqOj/VKzqrm5ucftBq6UYRhKSkpSQ0NDvz7Hfc+mg8GeAoJo+8yRQf39vA+to1fW0SvrAtkrh8NxfVz03RexsbGKjY31aw0AAPRfXKQDAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABggsAEAABgwh7sCQCAmXs2HQz2FCQdCOpv3z5zZFB/P9DfcYQJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABIEJAADABDeuBIBrQGjcvNMq/9/kkxt3Itg4wgQAAGCCwAQAAGCCU3KfcezYMa1Zs0aNjY2aOnWqZs2aJcMwgj0tAAAQZASmf/J4PCoqKtKoUaNUUFCg0tJSVVZWasqUKcGeGgD0e9fWNVy9Yf16L67jCi5Oyf1TVVWV3G638vLy5HK5lJubq4qKimBPCwAAhACOMP1TTU2NRowYofDwcElSSkqK6urqgjwrAADOu36Pslmza2FSUH8/gemf2traFB8f71s2DEM2m02tra1yOp0XbO/xeOTxeHpsHxkZKbvdvy3tvobK4XDI6/X6dexrSXrCha8BAKB/CcTfhVb/3iYw/ZPNZpPD4eixbsCAAero6Ljo9lu3btWWLVt8yxMnTlRBQYEGDhwYkPnFxcUFZNxrxca8ePONAADXtWD+Xcg1TP/kdDp1+vTpHuva2toumTxnzJihdevW+f6bN29ejyNO/tLW1qbHH39cbW1tfh/7ekOvrKNXvUO/rKNX1tEr60KhVxxh+qe0tLQeF3k3NTXJ4/Fc9HScdP6w4OePSAWC1+vV3//+9359Os4qemUdveod+mUdvbKOXlkXCr3iCNM/ZWRkyO12a+fOnZKkbdu2KSsrSzYbLQIAoL/jCNM/hYWFKT8/X8XFxdq4caO6urq0ZMmSYE8LAACEAALTZ2RnZ6u4uFjV1dVKT09XdHR0sKckh8Ohe++996qc/rvW0Svr6FXv0C/r6JV19Mq6UOiV4eXkKQAAwGVxgQ4AAIAJAhMAmDhz5ow+/PDDC249AqD/4BomXDfOnDmjwsJCLV68WAkJCcGeTsjatWuXysrKdPLkSd14441asGCBkpOTgz2tkPV///d/+s1vfqP4+HgdP35cDz/8sCZOnBjsaYW0pUuXauLEiZo8eXKwpxKySkpKtGPHDt9yYmKiVq1aFcQZhb5NmzaptrZWhYWFQfn9BKYQduzYMa1Zs0aNjY2aOnWqZs2a5fuqFPR0+vRpFRUVqbm5OdhTCWmNjY1avXq15s2bp8zMTJWUlOjZZ5/VT3/602BPLSR9+umnKikp0Y9//GMNHTpUr732mjZt2kRguoy//vWv2r17Nz0yceTIERUWFio9PV2SuIWNiWPHjunPf/6zioqKgjYHXqEQ5fF4VFRUpNTUVC1btkx1dXWqrKwM9rRC1tNPP80f0BbU19crNzdXEyZMUExMjG6//XZVV1cHe1ohq62tTQ899JCGDh0q6fyXcn/66adBnlXoam1t1fr16zV48OBgTyWknTt3TrW1tcrMzFRUVJSioqIUGRkZ7GmFLK/Xq+eee0533nmnXC5X0OZBYApRVVVVcrvdysvLk8vlUm5ubo87kaOn/Px83XnnncGeRsgbO3asbr/9dt/y8ePHg/oHUKiLi4tTTk6OJKmzs1MvvviisrOzgzyr0LV+/XplZ2dr+PDhwZ5KSKupqZHX69XChQs1c+ZMLV26VCdPngz2tELWq6++qqNHjyohIUHvvfeeOjs7gzIPAlOIqqmp0YgRIxQeHi7p/L9s6+rqgjyr0JWYmBjsKVxzugPAZwMULu7o0aOaN2+edu/erYceeijY0wlJe/fu1d/+9jfNnDkz2FMJefX19RoyZIgKCgr01FNPKSwsTGvXrg32tEJSe3u7ysvL5XK59PHHH+t///d/tXjxYnV0dFz1uRCYQlRbW5vi4+N9y4ZhyGazqbW1NYizwvWkvLxcERERmjZtWrCnEvJSUlL0ox/9SEOGDNHq1auDPZ2Q09HRoeeee07z5s3TF77whWBPJ+Tl5ORo6dKlSktLU0JCgubMmaPdu3fL7XYHe2oh5+2339bZs2e1ePFi3XvvvfrhD38ot9ut11577arPhcAUomw22wV3NB0wYEBQUjWuP3v27NHLL7+sgoIC2e189sOMYRhKTU3VggUL9O677/IPl8954YUX9OUvf1ljxowJ9lSuSVFRUfJ6vTp16lSwpxJyPv74Y6WlpcnpdEo6/zVmQ4cOVVNT01WfC39Shiin06na2toe69ra2vjLDVfsxIkTKi4u1ty5c7mdgIm9e/eqqqpKDzzwgKTzf1hLfKLp815//XWdPn3ad7ry7NmzevPNN3X48GHNnTs3uJMLQWVlZRo+fLgmTJggSTp8+LAMw9CgQYOCPLPQExcXd8GBgpMnT+qmm2666nPhb98QlZaW1uMi76amJnk8Hl/KBvqio6NDy5cv1/jx4zV+/Hi1t7dLksLDw7llxUUMHjxYK1euVFJSkkaPHq3y8nLdfPPNnHb6nJ/85Cc6d+6cb3nDhg0aPnw492G6hGHDhqm8vFwxMTHq6upSaWmpJk+e7LtmFf+/MWPGqKSkRH/+8581duxYvf322zp69KgKCgqu+lwITCEqIyNDbrdbO3fu1KRJk7Rt2zZlZWXxL1tckQ8++ED19fWqr6/Xq6++6lv/zDPPcLPPi4iNjdV//dd/qaysTBs2bNCoUaP02GOPBXtaIefzR0YiIiIUHR0dEl9gHoomTZqk+vp6rVy5UhEREcrOzlZubm6wpxWSnE6nFi1apA0bNmj9+vWKiYlRQUFBUP684st3Q9g777yj4uJiRUZGqqurS0uWLNGQIUOCPS0AAPodAlOIa2lpUXV1tdLT0/nXGgAAQUJgAgAAMMEFMQAAACYITAAAACYITAAAACYITAAAACYITAAAACYITACueY888ogqKyuDPQ2/qays1COPPBLsaQD4DO70DQBX0dGjR7Vv3z7dddddl9xm7NixuvHGG6/irACY4QgTAFxFR48e1UsvvXTZbW644QYNHTr0Ks0IgBUEJgAAABOckgNwRfbt26cf//jH+va3v63t27ervb1dY8eO1be//W194Qtf0COPPKJvfOMbPb65fsmSJcrMzNR9993XY3nChAnauHGjDh48qJKSEt+XTX/66acqKyvTO++8o7CwMN18883Ky8tTTExMj7ls3bpVL730kjo7O5WTk6PZs2fLMAxJ5794ePPmzaqvr9cXv/hF3XnnnT1OizU3N6u0tFQHDhyQJN10002aO3duj9+xY8cO/fGPf9SpU6c0bNgwffvb31ZqaqqlPv3qV7/Szp07fcvdz/3ee+/1/dytsrJSv/vd7/SrX/3qon3evHmzUlNTddddd+nZZ59VVFSUfvCDHyghIUGnT5/W+vXr9d577yksLEzZ2dl68MEHFRERIUnyeDzauHGj3nrrLbndbg0dOlSzZ89WWlqapecB9FccYQLgF7///e/1wAMPaN68edqzZ49Wr17dq8c3NTVpyZIlGjRokO6//35f0Onq6tLPfvYz7du3T/Pnz9cjjzyimpoa/fKXv+zx+D/+8Y9699139fDDD+vuu+/Wjh079P777/vGXrlypZKTk/XDH/5Q99xzj9avX+8LR9L5QNPY2KiCggItWLBADQ0NWrduna9eUVGhsrIy3XnnnXriiSf0xS9+UT/5yU905swZS8/vG9/4hpYtW6Z7771XAwcO1LJly7Rs2TJNmzatV33av3+/5s2bp/3792vz5s167LHH5Ha79dZbb0mSnnzySR09elSPPfaY5s2bp/fee0/PPfec7/Fbt25VRUWFHnjgAS1cuFCxsbFasWKF+JYs4PI4wgTAL2bNmqUJEyZIks6ePas1a9bo448/tvz41157Td/5znd0yy239Fi/d+9eHTp0yHcUSpLsdrteeeUVeTweORwOSdLp06f19NNPKyIiQmPGjNFf//pX1dTUaOzYsTp37pzy8vKUk5OjyMhIDRs2TFu3btVHH32kjIwMSeePMI0ePVqjR4+WJA0ePFiffPKJbx4vvPCC7rjjDn3961+XJKWkpGjOnDl69913NWXKFNPnl5CQoISEBNXW1sput+vLX/6y5d581kMPPaSBAwequLhY//Ef/6FRo0Zp8ODBam9v1759+3TgwAGtWLFCw4YNk3T+C7zXr1+v//zP/5TD4VBzc7Pi4uI0ceJEGYahYcOG6dChQzp37pzsdv5KAC6FdwcAv0hPT/f93B0GTpw4cdFtL3Y0Y/To0ReEJUn6+9//LpvN1mP8m2++WTfffHOP7SZNmuQ77SRJ0dHR6uzslCQlJSXJ4/Fo69atOnjwoI4cOSKPx6OzZ8/6tr/jjju0adMmHT9+XMOHD1dWVpaysrIkSW1tbWpubtZLL710wQXbDQ0NF29IgMTGxvp+HjhwoCT5jsYdO3ZMkvT973//gsc1Nzdr8ODBmjJlit566y1973vfU2ZmptLT05WdnU1YAkzwDgHgF58NQd0/d/9F/nknT568YN2lrqHxer0yDKPHWB0dHTpy5IiSk5PldDolSS6X65Jze/fdd/Xkk0/qlltu0eTJkzVv3jw9//zzPba5++679a//+q/au3evDhw4oBdffFGTJ0/W/Pnzfdvcf//9GjNmTI/HRUdHX/L3BoPNZtOyZcsu6H1cXJwkKTMzU8XFxdqzZ48+/PBDlZSUaPv27Vq6dKkGDBgQjCkD1wSuYQLgFwcPHvT9fPjwYRmGIZfLJZvN1uNIzuHDh9Xc3Gx53NTUVJ07d04ffvihb91HH32kH/3oR2ppafGt675A/GL+8pe/aMSIESooKNDUqVOVmJjYYw5nz57VunXrFBUVpa9//ev6zne+o/vuu09/+ctfdO7cOUVGRiouLk5nzpzRsGHDfP+9+uqrPZ63FQ6HQx0dHb16jFVDhgxRV1eXbDabb46GYegPf/iDPv30U0nS9u3b1dDQoEmTJik/P1+FhYWqqanRRx99FJA5AdcLjjAB8IvNmzf7jlCUl5frlltu0cCBA5WSkqLXX39dkyZNUktLi1avXq0bbrjB8rhZWVkaPny4fvWrX2nWrFkaMGCANm/erPT0dCUnJ1sa44YbbtDBgwf1/vvvy+Px6A9/+IOam5vV1dUlSQoPD1dVVZVOnjypO+64Q16vV7t27VJcXJzCwsIknf802/PPP6+BAwdq+PDheuedd/TKK6/oq1/9aq/6dOONN+rMmTN65ZVXlJSUpEOHDunuu+++bOCz6l/+5V+UkZGh4uJiffOb3/T1qqury/dpvxMnTui1117T/fffrxtuuEEVFRWy2WyKj4+/4t8PXM8ITAD84v7779emTZv0ySefaMyYMZo3b56k8xeDP/PMM8rPz9egQYOUm5treuPGz7LZbHriiSe0fv16rVmzRg6HQ6NHj9aDDz5oOWTcf//9+sc//qGnnnpKMTExuuWWWxQTE9Pj6NDjjz+u9evX65e//KU6OjqUlpam733ve7761KlT1dHRoT/+8Y/67W9/q+TkZC1cuFDDhw+3/Fyk89dT5efn63e/+51OnTqlwYMH6+677+7VGJfz3e9+V2VlZVq9erUMw/DdgqH7FN0DDzygjRs36vnnn9eZM2fkcrlUUFCgxMREv80BuB4ZXj5LCuAKdN8f6De/+U3IXc9ztXR1dV32Y/mGYfjlCBKA4OEIEwBcoS1btmjLli2XrI8ZM0aFhYVXcUYA/I0jTABwhU6dOqVTp05dsv6FL3xBCQkJV29CAPyOwAQAAGCCk+oAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAmCEwAAAAm/j9FjPebnO1roAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[11]].hist(range=[0,6],bins = 7,color = color[1])\n",
    "plt.xlabel(colnm[11],fontsize = 12)\n",
    "plt.ylabel(\"用户数\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '用户数')"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAGvCAYAAACpXIpyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2jklEQVR4nO3df1RU94H+8ecOMwJhShH5MRgUSRCELDVHhTQaKlKbtImbred00xBprKvBrTH17NnS0KSttF2rxLZJMNXEtCBKN6Q11d20ia2RQpuaTW1CTI35oVj5pRNQapUOyCDz/cMy307U3AuCM+r7dU5Ovfczc+czD1SfuffDxfD5fD4BAADggmzBngAAAECoozABAACYoDABAACYoDABAACYoDABAACYoDABAACYoDABAACYoDABAACYoDABAACYoDABAACYsAd7Aleav/zlL+rv7x/RY8bHx6uzs3NEj3mlIivryGpoyMs6srKOrKwbrazsdrvGjh1r/rgRf+WrXH9/v7xe74gdzzAM/3H5tX8fjqysI6uhIS/ryMo6srIuFLLikhwAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJe7AnAHM5a+uCPYXLxp6SpGBPAQBwBeIMEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAkKEwAAgAl7sCewZ88eVVdX69ixY7ruuuu0bNkyJScnq6WlRRs2bJDb7VZBQYGKiopkGIYkXfIxAABwdQvqGSa3263169frnnvu0ZNPPqm4uDg99dRT8nq9Ki8vV2pqqlavXq22tjbV19dL0iUfAwAACGpham9vV2FhoWbOnKmYmBjdeuutampqUmNjozwejxYuXCiXy6XCwkLV1dVJ0iUfAwAACOoluenTpwdsHzlyRC6XS83NzUpPT1d4eLgkKSUlRW1tbZJ0yccuxOv1yuv1+rcNw1BkZKT/zyOFy4JDR2bmBjMiK2vIyzqyso6srAuFrIK+hmlQf3+/nn/+ed1xxx3q6OhQfHy8f8wwDNlsNnV3d6unp+eSjjmdzvPOd9u2bdq6dat/OzU1VeXl5QHHGTn7R+GYVy6XyxXsKVw2yGpoyMs6srKOrKwLZlYhU5hqa2sVERGhuXPnqra2Vg6HI2B8zJgx6uvrk81mu6RjFzJ//nzNmzfPvz3Yejs7O9Xf32/9jZvgk8fQud1u+Xy+YE8jpBmGIZfLRVYWkZd1ZGUdWVk3mlnZ7XZLJztCojC9+eab2rlzp1atWiW73S6n06nW1taAx/T09ARl7EIcDsc5JWsQ3/jB5fP5+BpYRFZDQ17WkZV1ZGVdMLMK+n2Y3n//fVVUVGjJkiVKTk6WJKWlpenAgQP+x3R0dMjr9crpdF7yMQAAgKAWpr6+Pq1Zs0Y5OTnKyclRb2+vent7NWXKFHk8HjU0NEiStm/fruzsbNlsNmVmZl7SMQAAAMMXxPOAf/jDH/S9733vnP1PPPGEDh8+rIqKCkVGRmpgYEBlZWWaMGGC/3mXcmwoOjs7A3567mIZhqE7a94eseNd6faUFOjo0aOc3jZhGIaSkpLIyiLyso6srCMr60YzK4fDYWkNU1ALk5muri41NTUpIyND0dHRQR2zisIUXBQma/iLemjIyzqyso6srAuFwhQSi74vJDY2VrGxsSExBgAArl4s0gEAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBhD/YEJOnUqVMqLS3VypUrlZCQoPr6eq1fv/6cxy1btkz5+fmqrKzUjh07/PsTExO1bt06SVJLS4s2bNggt9utgoICFRUVyTCMixoDAABXt6AXppMnT6q8vFydnZ3+fbfccotycnL82729vfrqV7+qzMxMSdKhQ4dUWlqqjIwMSZLNdvZEmdfrVXl5uaZOnaoVK1aoqqpK9fX1mjNnzrDHAAAAgn5J7vHHH9esWbMC9tntdkVFRfn/a2ho0E033aTExESdOXNGra2tysrK8o9HRkZKkhobG+XxeLRw4UK5XC4VFhaqrq7uosYAAACCfoapuLhYiYmJ2rRp03nH+/r69OKLL2rVqlWSpObmZvl8PpWUlKirq0tZWVlaunSp4uLi1NzcrPT0dIWHh0uSUlJS1NbW5n/ecMYuxOv1yuv1+rcNw/AXt5G8lMdlwaEjM3ODGZGVNeRlHVlZR1bWhUJWQS9MiYmJHzr+8ssva/LkyUpISJAktbe3a8KECVq0aJGio6NVWVmpjRs36qGHHlJPT4/i4+P9zzUMQzabTd3d3cMeczqd553Xtm3btHXrVv92amqqysvLA44zcvaPwjGvXC6XK9hTuGyQ1dCQl3VkZR1ZWRfMrIJemMzs3LlTd911l387Ly9PeXl5/u3Fixdr+fLl8ng8stlscjgcAc8fM2aM+vr6hj12IfPnz9e8efP824Ott7OzU/39/UN/oxfAJ4+hc7vd8vl8wZ5GSDMMQy6Xi6wsIi/ryMo6srJuNLOy2+2WTnaEdGFyu91yu93Kzs6+4GOioqLk8/l04sQJOZ1Otba2Boz39PTIbrcPe+xCHA7HOSVrEN/4weXz+fgaWERWQ0Ne1pGVdWRlXTCzCvqi7w+ze/duTZ8+PaC4VFdXa/fu3f7tgwcPyjAMjRs3TmlpaTpw4IB/rKOjQ16vV06nc9hjAAAAIV2Y9u7dqxtuuCFg36RJk1RbW6v9+/dr3759qqqqUn5+vsLDw5WZmSmPx6OGhgZJ0vbt25WdnS2bzTbsMQAAgJC9JNfX16cDBw6ouLg4YP/s2bPV3t6utWvXKiIiQrm5uSosLJQkhYWFqbi4WBUVFaqpqdHAwIDKysouagwAAMDwXYEXTru6utTU1KSMjAxFR0ePyJhVnZ2dAbcbuFiGYejOmrdH7HhXuj0lBTp69CjrAUwYhqGkpCSysoi8rCMr68jKutHMyuFwXP6LvocrNjZWsbGxIzoGAACuXizSAQAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMGEP9gQk6dSpUyotLdXKlSuVkJAgSaqsrNSOHTv8j0lMTNS6deskSS0tLdqwYYPcbrcKCgpUVFQkwzBGbQwAAFzdgn6G6eTJk1qzZo06OzsD9h86dEilpaWqqqpSVVWVHnnkEUmS1+tVeXm5UlNTtXr1arW1tam+vn7UxgAAAIJemB5//HHNmjUrYN+ZM2fU2tqqrKwsRUVFKSoqSpGRkZKkxsZGeTweLVy4UC6XS4WFhaqrqxu1MQAAgKBfkisuLlZiYqI2bdrk39fc3Cyfz6eSkhJ1dXUpKytLS5cuVVxcnJqbm5Wenq7w8HBJUkpKitra2vzPG+mxC/F6vfJ6vf5twzD8pW4kL+VxWXDoyMzcYEZkZQ15WUdW1pGVdaGQVdALU2Ji4jn72tvbNWHCBC1atEjR0dGqrKzUxo0b9dBDD6mnp0fx8fH+xxqGIZvNpu7u7lEZczqd5533tm3btHXrVv92amqqysvLA44zcvaPwjGvXC6XK9hTuGyQ1dCQl3VkZR1ZWRfMrIJemM4nLy9PeXl5/u3Fixdr+fLl8ng8stlscjgcAY8fM2aM+vr6RmXsQubPn6958+b5twdbb2dnp/r7+4f2hj8EnzyGzu12y+fzBXsaIc0wDLlcLrKyiLysIyvryMq60czKbrdbOtkRkoXpg6KiouTz+XTixAk5nU61trYGjPf09Mhut4/K2IU4HI5zStYgvvGDy+fz8TWwiKyGhrysIyvryMq6YGYV9EXf51NdXa3du3f7tw8ePCjDMDRu3DilpaXpwIED/rGOjg55vV45nc5RGQMAAAjJwjRp0iTV1tZq//792rdvn6qqqpSfn6/w8HBlZmbK4/GooaFBkrR9+3ZlZ2fLZrONyhgAAEBIXpKbPXu22tvbtXbtWkVERCg3N1eFhYWSpLCwMBUXF6uiokI1NTUaGBhQWVnZqI0BAAAYvsv0wmlXV5eampqUkZGh6OjoUR+zqrOzM+B2AxfLMAzdWfP2iB3vSrenpEBHjx5lPYAJwzCUlJREVhaRl3VkZR1ZWTeaWTkcjitn0ff5xMbGKjY29pKNAQCAqxeLdAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAExQmAAAAEzYgz0BSTp16pRKS0u1cuVKJSQkSJL27Nmj6upqHTt2TNddd52WLVum5ORkSVJlZaV27Njhf35iYqLWrVsnSWppadGGDRvkdrtVUFCgoqIiGYZxUWMAAODqFvQzTCdPntSaNWvU2dnp3+d2u7V+/Xrdc889evLJJxUXF6ennnrKP37o0CGVlpaqqqpKVVVVeuSRRyRJXq9X5eXlSk1N1erVq9XW1qb6+vqLGgMAAAh6YXr88cc1a9asgH3t7e0qLCzUzJkzFRMTo1tvvVVNTU2SpDNnzqi1tVVZWVmKiopSVFSUIiMjJUmNjY3yeDxauHChXC6XCgsLVVdXd1FjAAAAQb8kV1xcrMTERG3atMm/b/r06QGPOXLkiFwulySpublZPp9PJSUl6urqUlZWlpYuXaq4uDg1NzcrPT1d4eHhkqSUlBS1tbX5nzecMQAAgKAXpsTExA8d7+/v1/PPP6877rhD0tmzTxMmTNCiRYsUHR2tyspKbdy4UQ899JB6enoUHx/vf65hGLLZbOru7h72mNPpPO+8vF6vvF5vwHMGz3SN5Non1lENHZmZG8yIrKwhL+vIyjqysi4UshpyYerv79ePf/xjLVy4UBERER/62P/5n//RbbfdZvq4D1NbW6uIiAjNnTtXkpSXl6e8vDz/+OLFi7V8+XJ5PB7ZbDY5HI6A548ZM0Z9fX3DHruQbdu2aevWrf7t1NRUlZeXBxSvkbN/FI555Ro8GwlzZDU05GUdWVlHVtYFM6shFyabzaa6ujrFxsZq3LhxSkhIUHJysmJiYgIe9+abb+qZZ57RuHHjdMsttwxrcm+++aZ27typVatWyW4//1SjoqLk8/l04sQJOZ1Otba2Boz39PTIbrcPe+xC5s+fr3nz5vm3B1tvZ2en+vv7h/Q+PwyfPIbO7XbL5/MFexohzTAMuVwusrKIvKwjK+vIyrrRzMput1s62TGswiRJ7777rv7617/qL3/5i06dOqWEhARlZ2fr1ltvVX9/v77//e/rlltuGXZZev/991VRUaElS5b4bycgSdXV1Zo8ebJmzpwpSTp48KAMw9C4ceOUlpYWsFi7o6NDXq9XTqdz2GMX4nA4zjkrNYhv/ODy+Xx8DSwiq6EhL+vIyjqysi6YWQ17DVNJSYl/kXR3d7fee+89vfzyy3rwwQdlt9s1e/ZsLVmyZFjH7uvr05o1a5STk6OcnBz19vZKksLDwzVp0iTV1tYqJiZGAwMDqqqqUn5+vsLDw5WZmSmPx6OGhgbNnj1b27dvV3Z2tmw227DHAAAALBWm06dPq6ysTDk5ObrxxhslBV4qOn36tDo6OvTnP/9Z0dHRcjqd6u7uHnbheOONN9Te3q729nbt2rXLv/+JJ57Q7Nmz1d7errVr1yoiIkK5ubkqLCyUJIWFham4uFgVFRWqqanRwMCAysrKLmoMAADA8Fk4t3Xs2DH9/Oc/15///GcdPnxYAwMDuvnmm9Xf36/m5mZ1dXUpPT1deXl5+sQnPqHe3l597Wtf06xZs3T33XdfivcRoKurS01NTcrIyFB0dPSIjFnV2dkZ8NNzF8swDN1Z8/aIHe9Kt6ekQEePHuX0tgnDMJSUlERWFpGXdWRlHVlZN5pZORyOkVvDFBcXp+LiYknS8ePH9eqrr+qtt97SG2+8ofDwcH3pS18KWKvkdDr1wAMP6Fvf+pby8vJ07bXXDvNtDE9sbKxiY2NHdAwAAFy9LK9hqq6u1tSpU3Xq1Cnt2bNHK1euVGNjo1555RW98847crvdmjVrlpKSkrR//369/vrruvnmm7V3795LXpgAAABGkuXCFBMTo6efflqTJ0+W3W7X22+/7f8ptptvvlmFhYX6+c9/rhkzZqi7u1sZGRm69957h31pCwAAIFRYWpU9MDCgO+64Q48++qhmzJghm82mI0eO6Etf+pJuuukm/+N+8IMfKDIyUm+99ZYmTJhAWQIAAFcES2eYXnvtNX3ve98L2PfGG29IknJycvy/+y0uLk6f/OQn9frrr+tHP/qRpkyZwpogAABw2bNUmDIzM/Vf//Vfstlsevvtt7VlyxaNHz9eS5cu1V//+letW7dOkvTCCy+ot7dX+fn5stls2rJli1asWDGqbwAAAGC0Wbok53Q6FR4ervXr12tgYEDp6elKTk7Ws88+qxkzZmjjxo2SpFdffVXPPfecsrOzNX/+fDU2Nur9998f1TcAAAAw2izfWXLjxo2aM2eOYmNjFRYWphUrVsjr9aq6utp/g8pvfOMbevDBB5WZmamIiAjNmDFDv/nNb0Zt8gAAAJeC5Z+S+/rXv66IiAi1tLQoPz9fdrtdy5Yt00svvSRJmjFjhiRp2rRp/ufMnTuX38IMAAAue5YLU0REhCRp4sSJmjhxoiRp/PjxuvfeeyWd/d1yHzRlypSRmCMAAEBQ8dtlAQAATFg+wzSoq6tLmzdvlt1u969d8vl8OnPmjG6++Wbl5OSM+CQBAACCaciFqbe3V6+88opSUlIknS1LLS0tmjJlyoj+0lkAAIBQMeTCNOiRRx6RdLZALVy4UCtWrOAmlQAA4IrEGiYAAAATFCYAAAATli/JDQwM6P/+7/8UFRU1mvMBAAAIOZYKk9vt1ne+8x0dP35cn/3sZ0d5SgAAAKHFUmGKj4/XzTffrNtuu019fX3atm3baM8LAAAgZFhawxQWFqaioiLFx8fLMIzRnhMAAEBIYdE3AACAiWHfh+nYsWOSpNOnT0s6ewfwmJgY/92/AQAArhTDLkz3339/wPbDDz8su92uiRMnasaMGZo7d64++tGPXvQEAQAAgm3IhSkhIUE/+MEPFBYWprCwMNlsNnm9XnV3d6urq0vvvfee6uvr9fOf/1xz5szR5z//eX3kIx8ZjbkDAABcEkMuTHa7Xddee+0Fx3Nzc7VgwQLV1dVp8+bNOnTokL773e9e1CQBAACCadiX5D6MYRj65Cc/qYyMDB0/fnw0XgIAAOCSGZXCNCg5OVnJycmj+RIAAACjznJheuWVV+RwOGS32y3di8lutys1NVXXXHPNRU0QAAAg2CwXpscee2zIB4+JiVFFRYXCw8OH/FwAAIBQMaRLcps3b5bD4ZDP59O9996rLVu2SJJ6e3u1aNEiPfPMM/7HHjt2TA888ID+9Kc/acaMGSM7awAAgEtoSIVp8DYC0tmF3YN//uD/SlJcXJw+85nPKCkpaaTmCgAAEBSjtujbZrPpi1/8oqXHnjp1SqWlpVq5cqUSEhIkSS0tLdqwYYPcbrcKCgpUVFTkXzt1qccAAMDVbVR/j4nX6zV9zMmTJ7VmzRp1dnYGPK+8vFypqalavXq12traVF9fH5QxAACAIZ1hWrBgQcD25z//+Q/dlqSKigolJiZe8JiPP/64Zs2apQMHDvj3NTY2yuPxaOHChQoPD1dhYaF+/OMfa86cOZd8DAAAYEiF6T//8z9lt9vl8/n0/e9/X1/5ylckSX19fXr00Uf14IMP+h87MDAgr9ermJiYDz1mcXGxEhMTtWnTJv++5uZmpaen+3+6LiUlRW1tbUEZuxCv1xtwBs0wDEVGRvr/PFK4LDh0ZGZuMCOysoa8rCMr68jKulDIakiFadq0abLbzz7FZrNp2rRpks7+lNzg+FCd7+xTT0+P4uPj/duDC8y7u7sv+ZjT6TzvvLdt26atW7f6t1NTU1VeXh5wnJGzfxSOeeVyuVzBnsJlg6yGhrysIyvryMq6YGY1qnf6Hi6bzSaHwxGwb8yYMerr67vkYxcyf/58zZs3z7892Ho7OzvV399v/c2a4JPH0Lndbvl8vmBPI6QZhiGXy0VWFpGXdWRlHVlZN5pZ2e12Syc7QrIwOZ1Otba2Buzr6emR3W6/5GMX4nA4zilZg/jGDy6fz8fXwCKyGhryso6srCMr64KZ1Ygu+l6yZIkmTJigzMxMffzjH9fEiROHNam0tDTV1dX5tzs6OuT1euV0Oi/5GAAAgOXC9LWvfU12u102my3gBpUDAwM6c+aMTp8+rRMnTqi9vV179uzRc889p7S0NC1YsEBZWVlDmlRmZqY8Ho8aGho0e/Zsbd++XdnZ2bLZbJd8DAAAwHJhuvHGG4d04KamJj377LMfug7oQsLCwlRcXKyKigrV1NRoYGBAZWVlQRkDAAAwfCF84bSrq0tNTU3KyMhQdHR0UMes6uzstHTDTqsMw9CdNW+P2PGudHtKCnT06FHWA5gwDENJSUlkZRF5WUdW1pGVdaOZlcPhuHwXfQ+KjY1VbGxsSIwBAICrF4t0AAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATFCYAAAATNiDPYEPU19fr/Xr15+zf9myZTp06JB27Njh35eYmKh169ZJklpaWrRhwwa53W4VFBSoqKhIhmFc1BgAALh6hXRhuuWWW5STk+Pf7u3t1Ve/+lVlZmbqpZdeUmlpqTIyMiRJNtvZk2Ver1fl5eWaOnWqVqxYoaqqKtXX12vOnDnDHgMAAFe3kL4kZ7fbFRUV5f+voaFBN910k+Li4tTa2qqsrCz/WGRkpCSpsbFRHo9HCxculMvlUmFhoerq6i5qDAAAXN1C+gzTP+rr69OLL76oVatWqbm5WT6fTyUlJerq6lJWVpaWLl2quLg4NTc3Kz09XeHh4ZKklJQUtbW1SdKwx87H6/XK6/X6tw3D8Je2kbyMxyXBoSMzc4MZkZU15GUdWVlHVtaFQlaXTWF6+eWXNXnyZCUkJOjdd9/VhAkTtGjRIkVHR6uyslIbN27UQw89pJ6eHsXHx/ufZxiGbDaburu7hz3mdDrPmc+2bdu0detW/3ZqaqrKy8sDjjFy9o/CMa9cLpcr2FO4bJDV0JCXdWRlHVlZF8ysLpvCtHPnTt11112SpLy8POXl5fnHFi9erOXLl8vj8chms8nhcAQ8d8yYMerr6xv22PnMnz9f8+bN828Ptt7Ozk719/cP/41+AJ88hs7tdsvn8wV7GiHNMAy5XC6ysoi8rCMr68jKutHMym63WzrZcVkUJrfbLbfbrezs7POOR0VFyefz6cSJE3I6nWptbQ0Y7+npkd1uH/bY+TgcjnMK1iC+8YPL5/PxNbCIrIaGvKwjK+vIyrpgZhXSi74H7d69W9OnT/eXl+rqau3evds/fvDgQRmGoXHjxiktLU0HDhzwj3V0dMjr9crpdA57DAAAXN0ui8K0d+9e3XDDDf7tSZMmqba2Vvv379e+fftUVVWl/Px8hYeHKzMzUx6PRw0NDZKk7du3Kzs7WzabbdhjAADg6hbyl+T6+vp04MABFRcX+/fNnj1b7e3tWrt2rSIiIpSbm6vCwkJJUlhYmIqLi1VRUaGamhoNDAyorKzsosYAAMDVzfBdoRdOu7q61NTUpIyMDEVHR4/ImBWdnZ0Btxu4WIZh6M6at0fseFe6PSUFOnr0KOsBTBiGoaSkJLKyiLysIyvryMq60czK4XBcOYu+hyM2NlaxsbEjOgYAAK5OLNABAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwYQ/2BD5MZWWlduzY4d9OTEzUunXr1NLSog0bNsjtdqugoEBFRUUyDEOSRmUMAABc3UL6DNOhQ4dUWlqqqqoqVVVV6ZFHHpHX61V5eblSU1O1evVqtbW1qb6+XpJGZQwAACBkC9OZM2fU2tqqrKwsRUVFKSoqSpGRkWpsbJTH49HChQvlcrlUWFiouro6SRqVMQAAgJC9JNfc3Cyfz6eSkhJ1dXUpKytLS5cuVXNzs9LT0xUeHi5JSklJUVtbm/85Iz0GAAAQsoWpvb1dEyZM0KJFixQdHa3Kykpt3LhRycnJio+P9z/OMAzZbDZ1d3erp6dnxMecTud55+f1euX1egOeExkZ6f/zSGEd1dCRmbnBjMjKGvKyjqysIyvrQiGrkC1MeXl5ysvL828vXrxYy5cv1/jx4+VwOAIeO2bMGPX19clms4342IVs27ZNW7du9W+npqaqvLw8oHiNnP2jcMwrl8vlCvYULhtkNTTkZR1ZWUdW1gUzq5AtTB8UFRUln8+nmJgYtba2Boz19PTIbrfL6XSO+NiFzJ8/X/PmzfNvD7bezs5O9ff3D+s9ng+fPIbO7XbL5/MFexohzTAMuVwusrKIvKwjK+vIyrrRzMput1s62RGyham6ulqTJ0/WzJkzJUkHDx6UYRiaOHFiwILsjo4Oeb1eOZ1OpaWljfjYhTgcjnPOSg3iGz+4fD4fXwOLyGpoyMs6srKOrKwLZlYh+1NykyZNUm1trfbv3699+/apqqpK+fn5mjp1qjwejxoaGiRJ27dvV3Z2tmw2mzIzM0d8DAAAIGTPMM2ePVvt7e1au3atIiIilJubq8LCQoWFham4uFgVFRWqqanRwMCAysrKJGlUxgAAAAzfZXoesKurS01NTcrIyFB0dPSoj1nV2dkZ8NNzF8swDN1Z8/aIHe9Kt6ekQEePHuX0tgnDMJSUlERWFpGXdWRlHVlZN5pZORyOy3sNk5nY2FjFxsZesjEAAHD1YpEOAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACQoTAACACXuwJwCMpJy1dcGewmVjT0lSsKcAAJcNzjABAACYoDABAACYoDABAACYCOk1THv27FF1dbWOHTum6667TsuWLVNycrIqKyu1Y8cO/+MSExO1bt06SVJLS4s2bNggt9utgoICFRUVyTCMixoDAABXt5A9w+R2u7V+/Xrdc889evLJJxUXF6ennnpKknTo0CGVlpaqqqpKVVVVeuSRRyRJXq9X5eXlSk1N1erVq9XW1qb6+vqLGgMAAAjZwtTe3q7CwkLNnDlTMTExuvXWW9XU1KQzZ86otbVVWVlZioqKUlRUlCIjIyVJjY2N8ng8WrhwoVwulwoLC1VXV3dRYwAAACF7SW769OkB20eOHJHL5VJzc7N8Pp9KSkrU1dWlrKwsLV26VHFxcWpublZ6errCw8MlSSkpKWpra5OkYY9diNfrldfr9W8bhuEvbiN5KY/LghhNfH9ZM5gTeZkjK+vIyrpQyCpkC9M/6u/v1/PPP6877rhD7e3tmjBhghYtWqTo6GhVVlZq48aNeuihh9TT06P4+Hj/8wzDkM1mU3d397DHnE7neee0bds2bd261b+dmpqq8vLygOOMnP2jcExAcrlcwZ7CZYW8rCMr68jKumBmdVkUptraWkVERGju3Lmy2+3Ky8vzjy1evFjLly+Xx+ORzWaTw+EIeO6YMWPU19c37LELmT9/vubNm+ffHmy9nZ2d6u/vH/Z7/SA+eWA0ud1u+Xy+YE8j5BmGIZfLRV4WkJV1ZGXdaGZlt9stnewI+cL05ptvaufOnVq1apXs9nOnGxUVJZ/PpxMnTsjpdKq1tTVgvKenR3a7fdhjF+JwOM4pWYP4xsflwufz8f06BORlHVlZR1bWBTOrkF30LUnvv/++KioqtGTJEiUnJ0uSqqurtXv3bv9jDh48KMMwNG7cOKWlpenAgQP+sY6ODnm9XjmdzmGPAQAAhGxh6uvr05o1a5STk6OcnBz19vaqt7dXKSkpqq2t1f79+7Vv3z5VVVUpPz9f4eHhyszMlMfjUUNDgyRp+/btys7Ols1mG/YYAABAyF6Se+ONN9Te3q729nbt2rXLv/+JJ57QkSNHtHbtWkVERCg3N1eFhYWSpLCwMBUXF6uiokI1NTUaGBhQWVnZRY0BAAAYvivwwmlXV5eampqUkZGh6OjoERmzqrOzM+B2AxfLMAzdWfP2iB0PGLSnpEBHjx5l7YQFhmEoKSmJvCwgK+vIyrrRzMrhcFwZi76HIzY2VrGxsSM6BgAArl4s0gEAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBBYQIAADBhD/YEAARHztq6YE/hsrKnJCnYUwAQRJxhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMEFhAgAAMMGNKwHAAm70aR03+cSViML0D1paWrRhwwa53W4VFBSoqKhIhmEEe1oAACDIKEx/5/V6VV5erqlTp2rFihWqqqpSfX295syZE+ypAcBlhbNxQ/F2sCdw2Qj2mUvWMP1dY2OjPB6PFi5cKJfLpcLCQtXV8X96AABAYfJrbm5Wenq6wsPDJUkpKSlqa2sL8qwAAEAo4JLc3/X09Cg+Pt6/bRiGbDaburu75XQ6z3m81+uV1+sNeHxkZKTs9pGN1DAMZSSc+/oAAFxtHA6HfD7fiB7T6r/bFKa/s9lscjgcAfvGjBmjvr6+8z5+27Zt2rp1q3971qxZWrFihcaOHTvic6tZGDfixwQA4HITFxe8fw+5JPd3TqdTJ0+eDNjX09NzweY5f/58bdq0yf/ffffdF3DGaaT09PTowQcfVE9Pz4gf+0pDVtaR1dCQl3VkZR1ZWRcKWXGG6e/S0tICFnl3dHTI6/We93KcdPa04AfPSI0Gn8+nP//5zyN+CvJKRFbWkdXQkJd1ZGUdWVkXCllxhunvMjMz5fF41NDQIEnavn27srOzZbMREQAAVzvOMP1dWFiYiouLVVFRoZqaGg0MDKisrCzY0wIAACGAwvQPcnNzVVFRoaamJmVkZCg6OjrYU5LD4dDnPve5S3L573JHVtaR1dCQl3VkZR1ZWRcKWRk+Lp4CAAB8KBboAAAAmKAwAYCJU6dO6d133z3n1iMArh6sYcIV49SpUyotLdXKlSuVkJAQ7OmErD179qi6ulrHjh3Tddddp2XLlik5OTnY0wpZv//97/WjH/1I8fHxOnLkiL70pS9p1qxZwZ5WSFu1apVmzZql/Pz8YE8lZFVWVmrHjh3+7cTERK1bty6IMwp9P/nJT9Ta2qrS0tKgvD6FKYS1tLRow4YNcrvdKigoUFFRkQzDCPa0QtLJkydVXl6uzs7OYE8lpLndbq1fv1733XefsrKyVFlZqaeeekrf+c53gj21kPS3v/1NlZWV+ta3vqWJEyfqt7/9rX7yk59QmD7E7373O+3du5eMTBw6dEilpaXKyMiQJG5hY6KlpUW//vWvVV5eHrQ58BUKUV6vV+Xl5UpNTdXq1avV1tam+vr6YE8rZD3++OP8BW1Be3u7CgsLNXPmTMXExOjWW29VU1NTsKcVsnp6evTFL35REydOlHT2l3L/7W9/C/KsQld3d7c2b96s8ePHB3sqIe3MmTNqbW1VVlaWoqKiFBUVpcjIyGBPK2T5fD49/fTTuv322+VyuYI2DwpTiGpsbJTH49HChQvlcrlUWFgYcCdyBCouLtbtt98e7GmEvOnTp+vWW2/1bx85ciSofwGFuri4OOXl5UmS+vv79fzzzys3NzfIswpdmzdvVm5uriZPnhzsqYS05uZm+Xw+lZSUaMGCBVq1apWOHTsW7GmFrF27dunw4cNKSEjQa6+9pv7+/qDMg8IUopqbm5Wenq7w8HBJZz/ZtrW1BXlWoSsxMTHYU7jsDBaAfyxQOL/Dhw/rvvvu0969e/XFL34x2NMJSfv27dOf/vQnLViwINhTCXnt7e2aMGGCVqxYoUcffVRhYWHauHFjsKcVknp7e1VbWyuXy6Xjx4/rF7/4hVauXKm+vr5LPhcKU4jq6elRfHy8f9swDNlsNnV3dwdxVriS1NbWKiIiQnPnzg32VEJeSkqKvvnNb2rChAlav359sKcTcvr6+vT000/rvvvu0zXXXBPs6YS8vLw8rVq1SmlpaUpISNDixYu1d+9eeTyeYE8t5Lz66qs6ffq0Vq5cqc997nP6+te/Lo/Ho9/+9reXfC4UphBls9nOuaPpmDFjgtKqceV58803tXPnTq1YsUJ2Oz/7YcYwDKWmpmrZsmX64x//yAeXD3juued0/fXXa9q0acGeymUpKipKPp9PJ06cCPZUQs7x48eVlpYmp9Mp6eyvMZs4caI6Ojou+Vz4mzJEOZ1Otba2Buzr6enhHzdctPfff18VFRVasmQJtxMwsW/fPjU2NuoLX/iCpLN/WUv8RNMHvfzyyzp58qT/cuXp06f1yiuv6ODBg1qyZElwJxeCqqurNXnyZM2cOVOSdPDgQRmGoXHjxgV5ZqEnLi7unBMFx44d0w033HDJ58K/viEqLS0tYJF3R0eHvF6vv2UDw9HX16c1a9YoJydHOTk56u3tlSSFh4dzy4rzGD9+vNauXaukpCTdeOONqq2t1cc+9jEuO33At7/9bZ05c8a/vWXLFk2ePJn7MF3ApEmTVFtbq5iYGA0MDKiqqkr5+fn+Nav4/6ZNm6bKykr9+te/1vTp0/Xqq6/q8OHDWrFixSWfC4UpRGVmZsrj8aihoUGzZ8/W9u3blZ2dzSdbXJQ33nhD7e3tam9v165du/z7n3jiCW72eR6xsbH6j//4D1VXV2vLli2aOnWqHnjggWBPK+R88MxIRESEoqOjQ+IXmIei2bNnq729XWvXrlVERIRyc3NVWFgY7GmFJKfTqYceekhbtmzR5s2bFRMToxUrVgTl7yt++W4I+8Mf/qCKigpFRkZqYGBAZWVlmjBhQrCnBQDAVYfCFOK6urrU1NSkjIwMPq0BABAkFCYAAAATLIgBAAAwQWECAAAwQWECAAAwQWECAAAwQWECAAAwQWECMGytra36xje+oQULFmjJkiVqbGwM9pSG7Ic//KF++MMfBnsapu666y699dZbwZ4GcNXitgIAhu3hhx/WuHHjdPvtt6urq0txcXFKT08P9rSGZPCXeF7ozsE//elPlZ+fP6p3FrbyGk1NTRo/frwiIyNHbR4ALoxfjQJg2A4dOqS77rpLU6ZMCfZUhs2sCG3dulU33HDDqBYmK69x/fXXj9rrAzDHJTkAw3bmzBnZ7XzuAnDl45IcgCF566239K1vfeuc/fHx8f61QL/4xS+0Y8cOnThxQklJSfrCF76gj33sY5KkDRs2qKurSw8//LD/uS+99JKeeeYZbdy4UWFhYTpz5oyeffZZ/eY3v1Fvb68+9rGPadGiRYqLi5MklZWVKSsrS3fddZf/GIOvff/99wdsFxYWqqamRnv37tWqVavkcrkC5v3B51l9j5J0+PBhVVdX67333tPYsWP1mc98RnfccceI5fiP7rrrLq1cuVI33HCDf9/999+vWbNm6Y9//KNOnDihL3/5y3ruuefU3NysL3zhC/rUpz4lSdqxY4d++ctf6sSJE5o0aZL+7d/+Tampqf7jvPrqq/rZz34mt9ut6OhoffrTn9add95p6X0AVws+GgIYkuuuu06rV6+WJH3ta1/Tfffdp+uuu04Oh0OS9PLLL2vz5s0qKipSenq6fv/73+sHP/iBNmzYoMjISM2aNUvl5eXq7e1VRESEJOm1117TTTfdpLCwMEnSxo0b9eqrr6qoqEixsbF69tlnVVZWpkceeUTXXHON5bl2d3frG9/4hjIyMvSv//qvln8fo9l7lKRTp07p29/+tm644QY9/PDDamlp0aZNmxQZGamCgoIReQ0rGhoatHTpUv3kJz/RmjVrtGTJEr399tt68cUX9alPfUp1dXWqrq7Wvffeq5SUFL3wwgv69re/rYqKCn3kIx+R2+3Wo48+qrlz52rx4sU6fPiwNm3apIkTJ+rGG28c0lyAKxmFCcCQREZGBqynGT9+fMB2bGysHnjgAeXl5UmSIiIi9Ktf/Urt7e1KS0vTP/3TP+maa67Rm2++qdzcXPX19Wnfvn0qLS2VdHYRdn19ve677z7NnTtXkpSSkqIvf/nLqq+v1+233255rq+99pruvfdezZs3b0TfoyS9+OKLstlsWrFihex2u7KysrRv3z41NDRYKkxWXsOK2267TdOmTdPu3bs1duxYzZ07V2FhYXrnnXckSc8995xuu+02feYzn5F0NsvFixfrj3/8o+bMmaPjx49rYGBAs2fP1uTJk5WZmalrr71WiYmJQ54LcCWjMAEYUVlZWXrjjTf09NNP67333lNbW5sk6fTp05Ikm82mm266Sa+99ppyc3O1b98+XXPNNcrMzJR09qfBfD6f/xKeJI0bN05JSUk6ePDgBV/X5/PJMIyAfcnJyUMqWEPR0tKikydP6p577gnYP3bs2FF5vQuJjY2VJBmG4X/twRx6enrU2dmpF154QS+88ELA844ePSpJysjIUGpqqr773e9q6tSpSktLU25u7qgucgcuRxQmACOqpqZGv/rVr/SpT31K8+fP15QpU/Tv//7vAY+ZOXOmHnvsMfl8Pr3++uv6+Mc/Lpvt7M+gXGhZ5QfL0AcdP37cv8Zp0PXXX+8/7mhIS0tTcXFxwL7RfL3huvvuuzVt2rSAfYOXJ+12u1atWqV9+/bpnXfe0e9+9zv993//tx5++OGA9VLA1S70/p8N4LK2a9cuzZs3T/fee69mzpypnp6ecx4zZcoUGYahpqYmvf7665o5c6Z/7Prrr5dhGNq3b59/X1dXl44cOeK/ZBUWFqa+vj7/+PHjx/Xee++NyvtxOBwBrzVo4sSJOnbsmK699lpNmjRJkyZN0pEjR7Rz584Re42LFRkZqbi4OJ06dco/x0mTJmnXrl3+S3ZvvfWWXnjhBd144426++67tWbNGiUkJOg3v/nNiM8HuJxxhgnAiPrIRz6iP/3pT8rOztaRI0f0s5/9TNLZWxAMstlsuvnmm7V161ZJCrjZZWJiovLz87VlyxYNDAwoNjZWP/3pTzV27FjNmTNH0tl1OHv27NGdd96p/v5+PfbYY0NaDD4UaWlp2rVrlyIjI3Xs2DHFxcVpypQp+vSnP60XX3xRjz32mD796U/rr3/9qyorK3XLLbeM2GuMhM997nP68Y9/rLFjx2ry5Mn6wx/+oJdeekmf+MQnJJ0tn7W1tQoLC1NaWpqOHDmizs7OYb0P4EpGYQIwou6//35VVlZq9erVcrlcWrBggaqrq/XOO+8ErEuaOXOmvv71r+uf//mfz7ncVlxcrI9+9KOqra3131bgK1/5ir8Uffazn1Vra6uWL1+u6Ohoffazn9W77747Ku9n6dKlevLJJ/Wd73xHkZGR/tsPREdH65vf/KY2b96sNWvWyOl0qqCgQHffffeIvcZIKCgoUF9fn375y1/q2WefVXJyskpKSjR58mRJ8l8y/d///V8988wzioyM1Jw5c/Qv//IvIzYH4ErAfZgAYBT84xm18xm8hQKAywNnmABghHV0dGj58uUf+pgf/ehHlu8LBSD4OMMEACOsv7/ffzuFC5k4cWJI/kQdgPOjMAEAAJjg4w0AAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAIAJChMAAICJ/wfK73UixcNihAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train[colnm[12]].hist(range=[0,6],bins = 6,color = color[1])\n",
    "plt.xlabel(colnm[12],fontsize = 12)\n",
    "plt.ylabel(\"用户数\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Feb\\AppData\\Local\\Temp\\ipykernel_12920\\3215232624.py:7: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  mask = np.zeros_like(mcorr, dtype=np.bool)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA00AAALrCAYAAAAiMWxrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xT1f/H8VfSJk1LF5RC2aNAEZFZKHvLFBFUFBAFAVG+4l4/ByouVFQURVAUREFURGWoqOy9l2yZHdBC6V5pmvz+KKSmKRHUDvX9fDzykHvu5957zm2RfPI598TgcDgciIiIiIiISJGMpd0BERERERGRskxJk4iIiIiIiAdKmkRERERERDxQ0iQiIiIiIuKBkiYREREREREPlDSJiIiIiIh4oKRJRERERETEAyVNIiIiIiIiHihpEhERERER8cC7tDsgxe/s2bTS7oKIiIiI/E5oaEBpd+GSjnToVWrXrr9uWald2xNVmkRERERERDxQpUlERERERAoYVFcpTHdERERERETEAyVNIiIiIiIiHmh6noiIiIiIFDAYSrsHZY4qTSIiIiIiIh6o0iQiIiIiIgWMqjQVpkqTiIiIiIiIB0qaREREREREPND0PBERERERcTLoe5rc6I6IiIiIiIh4oEqTiIiIiIgU0EIQblRpEhERERER8UCVJhERERERKaAvt3WjSpOIiIiIiIgHSppEREREREQ80PQ8EREREREpYFRdpTDdEREREREREQ9UaRIRERERkQJaCMKNKk0iIiIiIiIeKGkSERERERHxQEnT3ygmJoaIiAhiYmI8xm3evJmIiIg/fZ3hw4czderUP328iIiIiMilGAyGUnuVVUqaREREREREPFDSVEx27NjB7bffTocOHbjmmmsYNGgQu3btcon54IMP6Ny5M506deL111/HarU69y1dupT+/fvTsmVLBg0axLp160p4BCIiIiLyn2Q0lt6rjCq7PfsHy8nJ4Z577qFXr16sWbOGzZs3U7NmTV577TWXuMOHD/P999/z6aef8tNPP/Hhhx8CsHr1ap599lkmTJjAli1bGD9+POPHj+fIkSOlMRwRERERkf80JU3FwGQy8cUXXzB06FCsViuxsbEEBwcTHx/vjDEYDEyYMIFy5cpRq1YtRo8ezaJFiwD47LPPGDJkCK1atcLLy4uuXbvSrVs35s+fX1pDEhEREZH/CoOh9F5llL6nqRgYjUY2btzImDFjyMzMpF69enh7e+NwOJwxgYGBBAYGOrerVKniTKpiY2PZsmULn3/+uXN/Xl4ebdq0KblBiIiIiIgIoKSpWCQmJvLCCy8wf/58GjduDMDHH3/M8ePHnTHp6elkZmbi5+cHQHR0NNWqVQMgLCyMG264gbvuussZHxcXh8ViKcFRiIiIiIgIaHpesTh48CBGo9GZ5OzatYs5c+a4LPSQl5fHpEmTyMzM5OjRo3z00UfceuutAAwePJg5c+awZ88eAPbu3cugQYNYsmRJyQ9GRERERP5bjIbSe5VRqjQVg3bt2jF06FCGDRuG3W6nevXqDB8+nDfeeINz584BEBwcTHBwMJ07d6ZcuXLceuutDBs2DIDevXuTmZnJk08+SVxcHMHBwYwYMYLhw4eX5rBERERERP6TDI7fP2gj/0pnz6aVdhdERERE5HdCQwNKuwuXdPT6IaV27fBFn/9xUCnQ9DwREREREREPlDSJiIiIiIh4oGeaRERERETEyVCGF2QoLao0iYiIiIiIeKBKk4iIiIiIFDCo0lSYKk0iIiIiIiIeqNIkIiIiIiIFDKqrFKY7IiIiIiIi4oGSJhEREREREQ80PU9ERERERApoyXE3qjSJiIiIiIh4oEqTiIiIiIgU0JLjblRpEhERERER8UBJk4iIiIiIiAeaniciIiIiIk4Go+oqhemOiIiIiIiIeKBKk4iIiIiIFNBCEG5UaRIREREREfFAlSYRERERESmgZ5rc6I6IiIiIiIh4oKRJRERERETEA03PExERERGRAloIwo0qTSIiIiIiIh6o0iQiIiIiIgVUaXKjpOk/4P5535R2F4rV20MHlnYXRERERORfTNPzREREREREPFClSUREREREnAz6niY3uiMiIiIiIiIeqNIkIiIiIiIFtBCEG1WaREREREREPFClSUREREREChhVaSpMlSYREREREREPlDSJiIiIiIh4oOl5IiIiIiJSwKC6SmG6IyIiIiIiIh6o0iQiIiIiIgW0EIQbVZpEREREREQ8UNIkIiIiIiLigabniYiIiIhIAYOm5xWmSpOIiIiIiIgHqjSJiIiIiIiTQUuOu9EdERERERER8UCVJhERERERKaAlx92o0iQiIiIiIuKBkiYREREREREPND1PREREREQKaMlxN0qa5A8F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ZQqTJ0/mgQceIDAwkIEDBzJq1KjS7pqIiIiIiJQCJU1F6NGjBz166Dt1RERERERESZOIiIiIiPyOQQtBuCm7EwdFRERERETKAFWaRERERESkQBn4jtCyRpUmERERERERD1RpEhERERGRAkbVVQrTHREREREREfFASZOIiIiIiIgHmp4nIiIiIiIFND3Pje6IiIiIiIiIB6o0iYiIiIhIAS057kaVJhEREREREQ+UNImIiIiIiHig6XkiIiIiIuJkMGp6XmGqNImIiIiIiHigSpOIiIiIiBQwqK5SmO6IiIiIiIiIB0qaREREREREPND0PBERERERKaDvaXKjSpOIiIiIiIgHqjSJiIiIiEgBLTnuRpUmERERERERD1Rp+g+oW7lCaXehWMUnp5d2F4rVbR/MLe0uFKvP7hpW2l0QERGR39OS4250R0RERERERDxQ0iQiIiIiIuKBpueJiIiIiIiTQQtBuFGlSURERERExANVmkREREREpIC+3NaNKk0iIiIiIiIeKGkSERERERHxQNPzRERERESkgFF1lcJ0R0RERERERDxQpUlERERERApoIQg3qjSJiIiIiIh4oEqTiIiIiIgUUKXJjSpNIiIiIiIiHihpEhERERER8UDT80RERERExMmgJcfd6I6IiIiIiIh4oEqTiIiIiIgU0EIQblRpEhERERER8UBJk4iIiIiIiAeaniciIiIiIgWMmp5X2L+y0pSTk8OZM2cuK/bEiRPF2xkREREREflH+1dWmoYOHcqwYcMYNGiQx7j9+/czePBgfv3118s6b7du3bj33nv/8LwAERERzJkzh6ioqMs6d1nmb/HhlnbNqRdWkTy7g+3Hovlu617sDodb7FXVKtM/sjEh/uVIzsjku22/sj8mP4E1eRm5oXUTrqlZFW+jkZjEZL7ZuofTSaklPSQXgb4WRvdoQ6PqYdjtdtYdPMZna7YXOb5mtasxpEMLKgX5k5iWwdy129l5PNYt7vbOrfDzMTH9pw0lMYTL0iq8JqO6RVElOJCE1HRmLt/I5t9OFRlrNBi4s2sUPa5pgI/Jm90nY3nnh7WcT890i5s0rD/xyWm8sWRlSQxDREREipvhX1lX+Uv+lXckKSnpsuLS0tLIzc0t5t78893RuTU5uTYmfPEDby1ZSYMqoXRuVM8trmJAOUZ2bcMPO/fzf/MW88OuA4zo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Dgev3Xa9y/kvHl+aTp1L5un53zP22rY8dn034lPSmPDlD8QkJgPQ45oGPNy/C31e/gCAT1ZvxdvLyNQ7b8TXbGLXiVie+yr/A5I8u537Z3/D/3q157Pxt2H29mL9oRO8++OaUhlb4pffENy3J2EP3A0OB5m7fyV19XoAqj75EEmLfyRr735SV68Dh4OQwQMx+lqwnU/i3PyF5J7Jr7Zl7tyD0WIh5NZBGP18scadIXHeV87V9UREROS/y+D4Mw/hFINu3bpx7733MmjQoNLuyr/OY59+V9pdKFYx51NKuwvFKi6p9KYvloTPKP2FMoqTz//+V9pdEBGRMig0NKC0u3BJSb/uL7Vrl2/s/l2ZZUHZXQxdRERERESkDCi9tZ6LwbJly5xfoFuUli1bMnPmzP9MP0RERERErlRxLHz2T1dmpudJ8dH0vH82Tc/7Z9P0PBERKUpZnp6XvK90vjIFIPjqq0rt2p5oep6IiIiIiIgH/6rpeSIiIiIi8heV0vcvlmWqNImIiIiIiHigSpOIiIiIiBQwqK5SmO6IiIiIiIiIB0qaREREREREPND0PBERERERKaCFINyo0iQiIiIiIuKBKk0iIiIiIlLAoEpTYao0iYiIiIiIeKBKk4iIiIiIFNCS4250R0RERERERDxQ0iQiIiIiIuKBpueJiIiIiIiTQUuOu1GlSURERERExANVmkREREREpICWHHejSpOIiIiIiIgHSppEREREREQ80PQ8EREREREpYFRdpTDdEREREREREQ9UaRIRERERkQJaCMKNkqb/AMO//Bc/Ny+vtLsgf4Ff7+6l3YVilT3309LuQrEyDRte2l0QEREpdkqaRERERESkgL7c1o2eaRIREREREfFASZOIiIiIiIgHmp4nIiIiIiJOBoPqKoXpjoiIiIiIiHigSpOIiIiIiBT4l6+8/Geo0iQiIiIiIuKBkiYREREREREPND1PREREREQK6Hua3KjSJCIiIiIi4oEqTSIiIiIiUkBLjrvRHREREREREfFAlSYRERERESmgZ5rcqNIkIiIiIiLigZImERERERERDzQ9T0REREREnAwGTc8rTJUmERERERERD1RpEhERERGRAkbVVQrTHREREREREfFASZOIiIiIiIgH/+mk6cSJE6XdBRERERGRssVgKL1XGfWffaZp//79DB48mF9//bVUrj96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iIiIiIgHSppEREREREQ80PQ8ERERERFx0vQ8d6o0iYiIiIiIeKBKk4iIiIiIONlVaHKjSpOIiIiIiIgHSppEREREREQ80PQ8ERERERFx0kIQ7lRpEhERERER8UCVJhERERERcbKjSlNhqjSJiIiIiIh4oEqTiIiIiIg46Zkmd6o0iYiIiIiIeKBK039Adq6ttLtQrLyNXqXdhWJlMBhKuwvFyhgcVNpdKFa+ndqVdheKlbdXbml3oVhl55lKuwsiIlIGKGkSEREREREnzc5zp+l5IiIiIiIiHqjSJCIiIiIiTnaVmtyo0iQiIiIiIuKBkiYREREREREPlDSJiIiIiIiTw+EotdeVSExMZNy4cURGRhIVFcVLL72EzeZ51ejDhw/TtGlTNm/efEXXUtIkIiIiIiL/OA888AB+fn6sXbuWBQsWsHHjRmbPnn3J+KysLB5++GGys7Ov+FpKmkRERERExMnucJTa63KdPHmSLVu28Oijj+Lr60uNGjUYN24cc+fOveQxzz//PD169PhT90RJk4iIiIiIlAlWq5X09HSXl9VqdYs7cuQIwcHBVK5c2dkWHh5OXFwcqampbvHffvstJ0+e5N577/1T/dKS4yIiIiIi4lSaK47PmDGDd99916Xt3nvvZfz48S5tGRkZ+Pr6urRd3M7MzCQwMNDZfvToUd566y0+//xzvLy8/lS/lDSJiIiIiEiZMHbsWEaOHOnSZjab3eL8/PzIyspyabu4Xa5cOWdbTk4ODz74IE8++SRVq1b90/3S9DwRERERESkTzGYz/v7+Lq+ikqb69euTnJzMuXPnnG1Hjx4lLCyMgIAAZ9vevXs5ceIETz31FJGRkURGRgJw991389xzz112v1RpEhERERERpytd+rs01K5dm5YtW/Lyyy8zceJEkpKSmDZtGjfddJNLXGRkJHv27HFpi4iIYPr06URFRV329VRpEhERERGRf5x33nkHm81G9+7dGTx4MB07dmTcuHEANG/enEWLFv1t11KlSUREREREnK5k6e/SVLFiRd55550i9+3cufOSxx06dOiKr6VKk4iIiIiIiAdKmkRERERERDzQ9DwREREREXH6JywEUdJUaRIREREREfFAlSYREREREXFSncmdKk0iIiIiIiIelFqlKSYmhu7du7N8+XKqV69eWt0oVhEREcyZM+eKvjirLPK3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iIh4oEqTiIiIiIg42VVpcqNKk4iIiIiIiAdKmkRERERERDzQ9DwREREREXHS7Dx3qjSJiIiIiIh4oEqTiIiIiIg4aclxd6o0iYiIiIiIeKCkSURERERExANNzxMRERERESd9T5M7VZpEREREREQ8UKVJpIzzMf27/5qeHT2+tLtQrPx6X1vaXShWftf1LO0uFCtzYEBpd6FYWQMqlnYXRKQM0kIQ7lRpEhERERER8UBJk4iIiIiIiAf/7nk/IiIiIiJyReyanedGlSYREREREREPVGkSEREREREnLQThTpUmERERERERD1RpEhERERERJ1Wa3KnSJCIiIiIi4oGSJhEREREREQ80PU9ERERERJzsaHpeYao0iYiIiIiIeKBKk4iIiIiIOGkdCHeqNImIiIiIiHigpElERERERMQDTc8TEREREREnfU+TO1WaREREREREPFClSUREREREnOyqNLlRpUlERERERMQDVZpERERERMRJzzS5U6VJRERERETEAyVNIiIiIiIiHmh6nvwhf4sPt7RrTr2witgdDrYdjea7rXuLfEiwUfXK9I9sTIh/OZIyMlm09Vf2xZwBwORlZGDrJlxTsyreXkZiEpP5Zsse4pJSS3pILgJ9LYzu0YZG1cOw2+2sO3iMz9ZsL3J8zWpXY0iHFlQK8icxLYO5a7ez83isW9ztnVvh52Ni+k8bSmIIl6VVeA3u7BpFleBAElLTmbliE1t+O1VkrNFg4M6uUXS/pj4+3t7sPhnH1B/Wcj4j0y1u0tDriE9J440lq0pgFJfmFRxE9elTSHj1LbJ27ikyxq9NKyreMwpT1SrY4hM4N20mGRs2O/eXH3ozQTcNwCsggOyDh0h47R1yo2NKaghFMvr5EdzvWnxq1cBht5O19wApv6xy+7r2kFtvxFyzmuuxZjMZO3aT/P3P4O1N8LVdsETUx+DlhfVMPCk/r8SWcK4ER+PufEoKkz6YwY79+/Dy8qJ3h46MH3473l5ebrEPvPISO/btw8tY8Hnfyw89TNtmzel6+20usXaHgxyrlYn33U/P9h2KfRyXcj45mZffeZsde/bg5eVFn67duG/MmCLHd/8zT7N99268frdv0lNP0zYyktS0NCa/P42N27djy7VxVYMGPDBmDA3Cw0tyOCLyH2HX7Dw3qjT9zTZv3kxERAQAcXFxNG/enLi4OI/H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",
      "text/plain": [
       "<Figure size 1000x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style(\"dark\")\n",
    "\n",
    "plt.figure(figsize = (10,8))\n",
    "colnm = df_train.columns.tolist()[2:13]\n",
    "mcorr = df_train[colnm].corr()\n",
    "# np.zero_like的意思就是生成一个和你所给数组a相同shape的全0数组。\n",
    "mask = np.zeros_like(mcorr, dtype=np.bool)\n",
    "# np.triu_indices_from()返回方阵的上三角矩阵的索引\n",
    "mask[np.triu_indices_from(mask)] = True\n",
    "cmap = sns.diverging_palette(220, 10, as_cmap=True)\n",
    "g = sns.heatmap(mcorr, mask=mask, cmap=cmap, square=True, annot=True,fmt='0.2f')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型构建与调参"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>39</td>\n",
       "      <td>20</td>\n",
       "      <td>6</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83</td>\n",
       "      <td>48</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>78</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age_range  gender  total_logs  unique_item_ids  categories  browse_days  \\\n",
       "0        6.0     0.0          39               20           6            9   \n",
       "1        6.0     0.0          14                1           1            3   \n",
       "2        6.0     0.0          18                2           1            2   \n",
       "3        6.0     0.0           2                1           1            1   \n",
       "4        6.0     0.0           8                1           1            3   \n",
       "5        4.0     1.0           1                1           1            1   \n",
       "6        5.0     0.0           3                2           1            1   \n",
       "7        5.0     0.0          83               48          15            3   \n",
       "8        5.0     0.0           7                4           1            1   \n",
       "9        4.0     1.0           4                1           1            2   \n",
       "\n",
       "   one_clicks  shopping_carts  purchase_times  favourite_times  \n",
       "0          36               0               1                2  \n",
       "1          13               0               1                0  \n",
       "2          12               0               6                0  \n",
       "3           1               0               1                0  \n",
       "4           7               0               1                0  \n",
       "5           0               0               1                0  \n",
       "6           2               0               1                0  \n",
       "7          78               0               5                0  \n",
       "8           6               0               1                0  \n",
       "9           2               0               1                1  "
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#逻辑斯特模型\n",
    "Y = df_train['label']\n",
    "X = df_train.drop(['user_id','merchant_id','label'],axis = 1)\n",
    "X.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    0\n",
       "2    1\n",
       "3    0\n",
       "4    0\n",
       "5    0\n",
       "6    0\n",
       "7    1\n",
       "8    0\n",
       "9    0\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
      "[[0.79595173 0.20404827]\n",
      " [0.95828093 0.04171907]\n",
      " [0.95192884 0.04807116]\n",
      " ...\n",
      " [0.94052058 0.05947942]\n",
      " [0.95677673 0.04322327]\n",
      " [0.93242571 0.06757429]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9382053483807654"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size = 0.25,random_state = 10)\n",
    "\n",
    "# 一般的准确率验证方法\n",
    "Logit = LogisticRegression(solver='liblinear')\n",
    "Logit.fit(X_train, y_train)\n",
    "Predict = Logit.predict(X_test)\n",
    "Predict_proba = Logit.predict_proba(X_test)\n",
    "print(Predict[0:20])\n",
    "print(Predict_proba[:])\n",
    "Score = accuracy_score(y_test, Predict)\n",
    "Score\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lr.coef_: [[ 0.04943939 -0.09893529  0.01360958  0.01184859  0.0701754   0.06282769\n",
      "  -0.01775886 -0.13624063  0.17884963 -0.01124056]]\n",
      "lr.intercept_: [-3.47143692]\n"
     ]
    }
   ],
   "source": [
    "# 截距与斜率\n",
    "print(\"lr.coef_: {}\".format(Logit.coef_))\n",
    "print(\"lr.intercept_: {}\".format(Logit.intercept_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "准确率为:  0.9386998592077297\n"
     ]
    }
   ],
   "source": [
    "#初始化逻辑回归算法\n",
    "LogRegAlg=LogisticRegression(random_state=1,solver='liblinear')\n",
    "re = LogRegAlg.fit(X,Y)\n",
    "#使用sklearn库里面的交叉验证函数获取预测准确率分数\n",
    "scores = model_selection.cross_val_score(LogRegAlg,X,Y,cv=3)\n",
    "#使用交叉验证分数的平均值作为最终的准确率\n",
    "print(\"准确率为: \",scores.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test set R^2: 0.01\n"
     ]
    }
   ],
   "source": [
    "#K近邻模型\n",
    "# 模型实例化，并将邻居个数设为3 \n",
    "reg = KNeighborsRegressor(n_neighbors=1000)\n",
    "# 利用训练数据和训练目标值来拟合模型 \n",
    "reg.fit(X_train, y_train)\n",
    "print(\"Test set R^2: {:.2f}\".format(reg.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.89760368 0.10239632]\n",
      " [0.95837129 0.04162871]\n",
      " [0.95837129 0.04162871]\n",
      " ...\n",
      " [0.91089364 0.08910636]\n",
      " [0.95837129 0.04162871]\n",
      " [0.93376113 0.06623887]]\n",
      "Accuracy on training set: 0.939\n",
      "Accuracy on test set: 0.938\n"
     ]
    }
   ],
   "source": [
    "#决策树\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "tree = DecisionTreeClassifier(max_depth=4,random_state=0) \n",
    "tree.fit(X_train, y_train)\n",
    "Predict_proba = tree.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "print(\"Accuracy on training set: {:.3f}\".format(tree.score(X_train, y_train))) \n",
    "print(\"Accuracy on test set: {:.3f}\".format(tree.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import export_graphviz\n",
    "export_graphviz(tree, out_file=\"tree.dot\", class_names=[\"0\",\"1\"], feature_names=X.columns.tolist(), impurity=False, filled=True)\n",
    "# 我们可以利用 tree 模块的 export_graphviz 函数来将树可视化。这个函数会生成一 个 .dot 格式的文件，这是一种用于保存图形的文本文件格式。\n",
    "# 设置为结点添加颜色 的选项，颜色表示每个结点中的多数类别，同时传入类别名称和特征名称，这样可以对 树正确标记"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.50.0 (0)\n",
       " -->\n",
       "<!-- Title: Tree Pages: 1 -->\n",
       "<svg width=\"2405pt\" height=\"477pt\"\n",
       " viewBox=\"0.00 0.00 2405.00 477.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 473)\">\n",
       "<title>Tree</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-473 2401,-473 2401,4 -4,4\"/>\n",
       "<!-- 0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>0</title>\n",
       "<polygon fill=\"#e78946\" stroke=\"black\" points=\"1310,-469 1149,-469 1149,-401 1310,-401 1310,-469\"/>\n",
       "<text text-anchor=\"middle\" x=\"1229.5\" y=\"-453.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">categories &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1229.5\" y=\"-438.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 195648</text>\n",
       "<text text-anchor=\"middle\" x=\"1229.5\" y=\"-423.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [183706, 11942]</text>\n",
       "<text text-anchor=\"middle\" x=\"1229.5\" y=\"-408.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>1</title>\n",
       "<polygon fill=\"#e68844\" stroke=\"black\" points=\"1028,-365 873,-365 873,-297 1028,-297 1028,-365\"/>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-349.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 1.5</text>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-334.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 159636</text>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-319.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [151437, 8199]</text>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-304.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;1 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>0&#45;&gt;1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1148.8,-404.5C1113.94,-391.75 1073.07,-376.81 1037.53,-363.82\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1038.73,-360.53 1028.14,-360.38 1036.33,-367.1 1038.73,-360.53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1038.67\" y=\"-379.36\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">True</text>\n",
       "</g>\n",
       "<!-- 16 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>16</title>\n",
       "<polygon fill=\"#e89050\" stroke=\"black\" points=\"1608.5,-365 1442.5,-365 1442.5,-297 1608.5,-297 1608.5,-365\"/>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-349.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 19.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-334.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 36012</text>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-319.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [32269, 3743]</text>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-304.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 0&#45;&gt;16 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>0&#45;&gt;16</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1310.38,-406.13C1348.18,-393.1 1393.38,-377.53 1432.57,-364.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1434.08,-367.2 1442.4,-360.64 1431.8,-360.59 1434.08,-367.2\"/>\n",
       "<text text-anchor=\"middle\" x=\"1431.44\" y=\"-379.41\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">False</text>\n",
       "</g>\n",
       "<!-- 2 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2</title>\n",
       "<polygon fill=\"#e68743\" stroke=\"black\" points=\"563.5,-261 405.5,-261 405.5,-193 563.5,-193 563.5,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 136259</text>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [129939, 6320]</text>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;2 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>1&#45;&gt;2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M872.76,-312.98C790.23,-294.92 660,-266.41 573.43,-247.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"574.14,-244.04 563.63,-245.32 572.65,-250.88 574.14,-244.04\"/>\n",
       "</g>\n",
       "<!-- 9 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>9</title>\n",
       "<polygon fill=\"#e78c4a\" stroke=\"black\" points=\"1028,-261 873,-261 873,-193 1028,-193 1028,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 23377</text>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [21498, 1879]</text>\n",
       "<text text-anchor=\"middle\" x=\"950.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 1&#45;&gt;9 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>1&#45;&gt;9</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M950.5,-296.88C950.5,-288.78 950.5,-279.98 950.5,-271.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"954,-271.3 950.5,-261.3 947,-271.3 954,-271.3\"/>\n",
       "</g>\n",
       "<!-- 3 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>3</title>\n",
       "<polygon fill=\"#e68742\" stroke=\"black\" points=\"317.5,-157 159.5,-157 159.5,-89 317.5,-89 317.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 1.5</text>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 104095</text>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [99610, 4485]</text>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;3 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2&#45;&gt;3</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M405.31,-193.17C380.29,-182.79 352.49,-171.26 326.87,-160.64\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"328.12,-157.37 317.54,-156.77 325.44,-163.84 328.12,-157.37\"/>\n",
       "</g>\n",
       "<!-- 6 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>6</title>\n",
       "<polygon fill=\"#e78945\" stroke=\"black\" points=\"558,-157 411,-157 411,-89 558,-89 558,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">browse_days &lt;= 2.5</text>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 32164</text>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [30329, 1835]</text>\n",
       "<text text-anchor=\"middle\" x=\"484.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 2&#45;&gt;6 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2&#45;&gt;6</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M484.5,-192.88C484.5,-184.78 484.5,-175.98 484.5,-167.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"488,-167.3 484.5,-157.3 481,-167.3 488,-167.3\"/>\n",
       "</g>\n",
       "<!-- 4 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>4</title>\n",
       "<polygon fill=\"#e68642\" stroke=\"black\" points=\"147,-53 0,-53 0,0 147,0 147,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"73.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 79032</text>\n",
       "<text text-anchor=\"middle\" x=\"73.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [75742, 3290]</text>\n",
       "<text text-anchor=\"middle\" x=\"73.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;4 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>3&#45;&gt;4</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M180.79,-88.95C163.3,-78.93 144.17,-67.98 126.97,-58.13\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"128.59,-55.02 118.18,-53.09 125.11,-61.09 128.59,-55.02\"/>\n",
       "</g>\n",
       "<!-- 5 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>5</title>\n",
       "<polygon fill=\"#e68743\" stroke=\"black\" points=\"311.5,-53 165.5,-53 165.5,0 311.5,0 311.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 25063</text>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [23868, 1195]</text>\n",
       "<text text-anchor=\"middle\" x=\"238.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 3&#45;&gt;5 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>3&#45;&gt;5</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M238.5,-88.95C238.5,-80.72 238.5,-71.85 238.5,-63.48\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"242,-63.24 238.5,-53.24 235,-63.24 242,-63.24\"/>\n",
       "</g>\n",
       "<!-- 7 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>7</title>\n",
       "<polygon fill=\"#e68844\" stroke=\"black\" points=\"475.5,-53 329.5,-53 329.5,0 475.5,0 475.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"402.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 22502</text>\n",
       "<text text-anchor=\"middle\" x=\"402.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [21307, 1195]</text>\n",
       "<text text-anchor=\"middle\" x=\"402.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;7 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>6&#45;&gt;7</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M455.82,-88.95C447.96,-79.89 439.44,-70.07 431.56,-60.99\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"434.03,-58.5 424.83,-53.24 428.74,-63.08 434.03,-58.5\"/>\n",
       "</g>\n",
       "<!-- 8 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>8</title>\n",
       "<polygon fill=\"#e78a47\" stroke=\"black\" points=\"625.5,-53 493.5,-53 493.5,0 625.5,0 625.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"559.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 9662</text>\n",
       "<text text-anchor=\"middle\" x=\"559.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [9022, 640]</text>\n",
       "<text text-anchor=\"middle\" x=\"559.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 6&#45;&gt;8 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>6&#45;&gt;8</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M510.73,-88.95C517.85,-79.98 525.56,-70.27 532.7,-61.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"535.6,-63.25 539.07,-53.24 530.12,-58.89 535.6,-63.25\"/>\n",
       "</g>\n",
       "<!-- 10 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>10</title>\n",
       "<polygon fill=\"#e78b49\" stroke=\"black\" points=\"939.5,-157 781.5,-157 781.5,-89 939.5,-89 939.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"860.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 4.5</text>\n",
       "<text text-anchor=\"middle\" x=\"860.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 18297</text>\n",
       "<text text-anchor=\"middle\" x=\"860.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [16911, 1386]</text>\n",
       "<text text-anchor=\"middle\" x=\"860.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 9&#45;&gt;10 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>9&#45;&gt;10</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M921.28,-192.88C913.42,-183.98 904.83,-174.24 896.64,-164.96\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"899.12,-162.48 889.88,-157.3 893.87,-167.11 899.12,-162.48\"/>\n",
       "</g>\n",
       "<!-- 13 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>13</title>\n",
       "<polygon fill=\"#e88f4e\" stroke=\"black\" points=\"1123.5,-157 957.5,-157 957.5,-89 1123.5,-89 1123.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1040.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 75.0</text>\n",
       "<text text-anchor=\"middle\" x=\"1040.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5080</text>\n",
       "<text text-anchor=\"middle\" x=\"1040.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4587, 493]</text>\n",
       "<text text-anchor=\"middle\" x=\"1040.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 9&#45;&gt;13 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>9&#45;&gt;13</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M979.72,-192.88C987.58,-183.98 996.17,-174.24 1004.36,-164.96\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1007.13,-167.11 1011.12,-157.3 1001.88,-162.48 1007.13,-167.11\"/>\n",
       "</g>\n",
       "<!-- 11 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>11</title>\n",
       "<polygon fill=\"#e78b48\" stroke=\"black\" points=\"791,-53 644,-53 644,0 791,0 791,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"717.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 14414</text>\n",
       "<text text-anchor=\"middle\" x=\"717.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [13374, 1040]</text>\n",
       "<text text-anchor=\"middle\" x=\"717.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;11 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>10&#45;&gt;11</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M810.49,-88.95C795.67,-79.16 779.51,-68.48 764.87,-58.8\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"766.72,-55.83 756.45,-53.24 762.86,-61.67 766.72,-55.83\"/>\n",
       "</g>\n",
       "<!-- 12 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>12</title>\n",
       "<polygon fill=\"#e88d4c\" stroke=\"black\" points=\"941.5,-53 809.5,-53 809.5,0 941.5,0 941.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"875.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 3883</text>\n",
       "<text text-anchor=\"middle\" x=\"875.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3537, 346]</text>\n",
       "<text text-anchor=\"middle\" x=\"875.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 10&#45;&gt;12 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>10&#45;&gt;12</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M865.75,-88.95C867.07,-80.62 868.49,-71.65 869.83,-63.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"873.3,-63.66 871.41,-53.24 866.39,-62.56 873.3,-63.66\"/>\n",
       "</g>\n",
       "<!-- 14 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>14</title>\n",
       "<polygon fill=\"#e88f4e\" stroke=\"black\" points=\"1091.5,-53 959.5,-53 959.5,0 1091.5,0 1091.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1025.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5079</text>\n",
       "<text text-anchor=\"middle\" x=\"1025.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4587, 492]</text>\n",
       "<text text-anchor=\"middle\" x=\"1025.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 13&#45;&gt;14 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>13&#45;&gt;14</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1035.25,-88.95C1033.93,-80.62 1032.51,-71.65 1031.17,-63.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1034.61,-62.56 1029.59,-53.24 1027.7,-63.66 1034.61,-62.56\"/>\n",
       "</g>\n",
       "<!-- 15 -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>15</title>\n",
       "<polygon fill=\"#399de5\" stroke=\"black\" points=\"1205,-53 1110,-53 1110,0 1205,0 1205,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1157.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1</text>\n",
       "<text text-anchor=\"middle\" x=\"1157.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [0, 1]</text>\n",
       "<text text-anchor=\"middle\" x=\"1157.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 1</text>\n",
       "</g>\n",
       "<!-- 13&#45;&gt;15 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>13&#45;&gt;15</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1081.42,-88.95C1093.2,-79.43 1106.03,-69.07 1117.74,-59.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1120.06,-62.24 1125.64,-53.24 1115.66,-56.8 1120.06,-62.24\"/>\n",
       "</g>\n",
       "<!-- 17 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>17</title>\n",
       "<polygon fill=\"#e88e4d\" stroke=\"black\" points=\"1603,-261 1448,-261 1448,-193 1603,-193 1603,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 1.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 29836</text>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [27125, 2711]</text>\n",
       "<text text-anchor=\"middle\" x=\"1525.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;17 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>16&#45;&gt;17</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1525.5,-296.88C1525.5,-288.78 1525.5,-279.98 1525.5,-271.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1529,-271.3 1525.5,-261.3 1522,-271.3 1529,-271.3\"/>\n",
       "</g>\n",
       "<!-- 24 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>24</title>\n",
       "<polygon fill=\"#ea9a61\" stroke=\"black\" points=\"2043.5,-261 1903.5,-261 1903.5,-193 2043.5,-193 2043.5,-261\"/>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-245.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">categories &lt;= 10.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-230.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 6176</text>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-215.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [5144, 1032]</text>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-200.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 16&#45;&gt;24 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>16&#45;&gt;24</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1608.72,-311.05C1690.01,-292.55 1812.9,-264.56 1893.19,-246.29\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1894.27,-249.63 1903.25,-243.99 1892.72,-242.8 1894.27,-249.63\"/>\n",
       "</g>\n",
       "<!-- 18 -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>18</title>\n",
       "<polygon fill=\"#e78b49\" stroke=\"black\" points=\"1519.5,-157 1361.5,-157 1361.5,-89 1519.5,-89 1519.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1440.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">unique_item_ids &lt;= 9.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1440.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 16337</text>\n",
       "<text text-anchor=\"middle\" x=\"1440.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [15096, 1241]</text>\n",
       "<text text-anchor=\"middle\" x=\"1440.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;18 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>17&#45;&gt;18</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1497.9,-192.88C1490.55,-184.07 1482.53,-174.43 1474.86,-165.24\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1477.34,-162.74 1468.25,-157.3 1471.96,-167.22 1477.34,-162.74\"/>\n",
       "</g>\n",
       "<!-- 21 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>21</title>\n",
       "<polygon fill=\"#e89051\" stroke=\"black\" points=\"1685,-157 1538,-157 1538,-89 1685,-89 1685,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1611.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">browse_days &lt;= 3.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1611.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 13499</text>\n",
       "<text text-anchor=\"middle\" x=\"1611.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [12029, 1470]</text>\n",
       "<text text-anchor=\"middle\" x=\"1611.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 17&#45;&gt;21 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>17&#45;&gt;21</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1553.42,-192.88C1560.93,-183.98 1569.14,-174.24 1576.97,-164.96\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1579.65,-167.2 1583.42,-157.3 1574.3,-162.69 1579.65,-167.2\"/>\n",
       "</g>\n",
       "<!-- 19 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>19</title>\n",
       "<polygon fill=\"#e78a48\" stroke=\"black\" points=\"1363.5,-53 1223.5,-53 1223.5,0 1363.5,0 1363.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1293.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 11234</text>\n",
       "<text text-anchor=\"middle\" x=\"1293.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [10464, 770]</text>\n",
       "<text text-anchor=\"middle\" x=\"1293.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;19 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>18&#45;&gt;19</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1389.09,-88.95C1373.86,-79.16 1357.24,-68.48 1342.19,-58.8\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1343.84,-55.7 1333.53,-53.24 1340.05,-61.59 1343.84,-55.7\"/>\n",
       "</g>\n",
       "<!-- 20 -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>20</title>\n",
       "<polygon fill=\"#e88e4d\" stroke=\"black\" points=\"1513.5,-53 1381.5,-53 1381.5,0 1513.5,0 1513.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1447.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 5103</text>\n",
       "<text text-anchor=\"middle\" x=\"1447.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [4632, 471]</text>\n",
       "<text text-anchor=\"middle\" x=\"1447.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 18&#45;&gt;20 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>18&#45;&gt;20</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1442.95,-88.95C1443.56,-80.72 1444.21,-71.85 1444.83,-63.48\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1448.35,-63.47 1445.59,-53.24 1441.36,-62.95 1448.35,-63.47\"/>\n",
       "</g>\n",
       "<!-- 22 -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>22</title>\n",
       "<polygon fill=\"#e88f50\" stroke=\"black\" points=\"1677.5,-53 1531.5,-53 1531.5,0 1677.5,0 1677.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1604.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 11309</text>\n",
       "<text text-anchor=\"middle\" x=\"1604.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [10151, 1158]</text>\n",
       "<text text-anchor=\"middle\" x=\"1604.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 21&#45;&gt;22 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>21&#45;&gt;22</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1609.05,-88.95C1608.44,-80.72 1607.79,-71.85 1607.17,-63.48\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1610.64,-62.95 1606.41,-53.24 1603.65,-63.47 1610.64,-62.95\"/>\n",
       "</g>\n",
       "<!-- 23 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>23</title>\n",
       "<polygon fill=\"#e9965a\" stroke=\"black\" points=\"1827.5,-53 1695.5,-53 1695.5,0 1827.5,0 1827.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1761.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 2190</text>\n",
       "<text text-anchor=\"middle\" x=\"1761.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1878, 312]</text>\n",
       "<text text-anchor=\"middle\" x=\"1761.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 21&#45;&gt;23 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>21&#45;&gt;23</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1663.96,-88.95C1679.5,-79.16 1696.46,-68.48 1711.82,-58.8\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1714.05,-61.53 1720.65,-53.24 1710.32,-55.61 1714.05,-61.53\"/>\n",
       "</g>\n",
       "<!-- 25 -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>25</title>\n",
       "<polygon fill=\"#ea975b\" stroke=\"black\" points=\"2051,-157 1896,-157 1896,-89 2051,-89 2051,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">purchase_times &lt;= 3.5</text>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 4664</text>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3972, 692]</text>\n",
       "<text text-anchor=\"middle\" x=\"1973.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 24&#45;&gt;25 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>24&#45;&gt;25</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1973.5,-192.88C1973.5,-184.78 1973.5,-175.98 1973.5,-167.47\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1977,-167.3 1973.5,-157.3 1970,-167.3 1977,-167.3\"/>\n",
       "</g>\n",
       "<!-- 28 -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>28</title>\n",
       "<polygon fill=\"#eda672\" stroke=\"black\" points=\"2277.5,-157 2131.5,-157 2131.5,-89 2277.5,-89 2277.5,-157\"/>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-141.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">browse_days &lt;= 26.5</text>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-126.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1512</text>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-111.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1172, 340]</text>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-96.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 24&#45;&gt;28 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>24&#45;&gt;28</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2043.75,-194.98C2068.46,-184.07 2096.45,-171.71 2122.07,-160.4\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2123.65,-163.53 2131.39,-156.28 2120.82,-157.12 2123.65,-163.53\"/>\n",
       "</g>\n",
       "<!-- 26 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>26</title>\n",
       "<polygon fill=\"#e99559\" stroke=\"black\" points=\"1977.5,-53 1845.5,-53 1845.5,0 1977.5,0 1977.5,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"1911.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 3791</text>\n",
       "<text text-anchor=\"middle\" x=\"1911.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [3266, 525]</text>\n",
       "<text text-anchor=\"middle\" x=\"1911.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;26 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>25&#45;&gt;26</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1951.82,-88.95C1946.05,-80.17 1939.82,-70.66 1934.01,-61.82\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1936.8,-59.68 1928.39,-53.24 1930.94,-63.52 1936.8,-59.68\"/>\n",
       "</g>\n",
       "<!-- 27 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>27</title>\n",
       "<polygon fill=\"#eb9f68\" stroke=\"black\" points=\"2121,-53 1996,-53 1996,0 2121,0 2121,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"2058.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 873</text>\n",
       "<text text-anchor=\"middle\" x=\"2058.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [706, 167]</text>\n",
       "<text text-anchor=\"middle\" x=\"2058.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 25&#45;&gt;27 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>25&#45;&gt;27</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2003.23,-88.95C2011.46,-79.8 2020.39,-69.87 2028.63,-60.71\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2031.27,-63.01 2035.35,-53.24 2026.06,-58.33 2031.27,-63.01\"/>\n",
       "</g>\n",
       "<!-- 29 -->\n",
       "<g id=\"node30\" class=\"node\">\n",
       "<title>29</title>\n",
       "<polygon fill=\"#eca470\" stroke=\"black\" points=\"2270,-53 2139,-53 2139,0 2270,0 2270,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 1483</text>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [1161, 322]</text>\n",
       "<text text-anchor=\"middle\" x=\"2204.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 0</text>\n",
       "</g>\n",
       "<!-- 28&#45;&gt;29 -->\n",
       "<g id=\"edge29\" class=\"edge\">\n",
       "<title>28&#45;&gt;29</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2204.5,-88.95C2204.5,-80.72 2204.5,-71.85 2204.5,-63.48\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2208,-63.24 2204.5,-53.24 2201,-63.24 2208,-63.24\"/>\n",
       "</g>\n",
       "<!-- 30 -->\n",
       "<g id=\"node31\" class=\"node\">\n",
       "<title>30</title>\n",
       "<polygon fill=\"#b2d9f5\" stroke=\"black\" points=\"2397,-53 2288,-53 2288,0 2397,0 2397,-53\"/>\n",
       "<text text-anchor=\"middle\" x=\"2342.5\" y=\"-37.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">samples = 29</text>\n",
       "<text text-anchor=\"middle\" x=\"2342.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">value = [11, 18]</text>\n",
       "<text text-anchor=\"middle\" x=\"2342.5\" y=\"-7.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">class = 1</text>\n",
       "</g>\n",
       "<!-- 28&#45;&gt;30 -->\n",
       "<g id=\"edge30\" class=\"edge\">\n",
       "<title>28&#45;&gt;30</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2252.77,-88.95C2266.93,-79.25 2282.37,-68.68 2296.39,-59.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2298.64,-61.77 2304.92,-53.24 2294.69,-56 2298.64,-61.77\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.sources.Source at 0x20d1cf69c10>"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import graphviz\n",
    "with open(\"tree.dot\") as f: \n",
    "    dot_graph = f.read() \n",
    "graphviz.Source(dot_graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature importances:\n",
      "[0.         0.         0.         0.22828078 0.51584599 0.05130975\n",
      " 0.         0.         0.20456347 0.        ]\n"
     ]
    }
   ],
   "source": [
    "print(\"Feature importances:\\n{}\".format(tree.feature_importances_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 10 artists>"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnMAAAGbCAYAAACvTxZ8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABIP0lEQVR4nO3deVhW1f7//yczYpFIKOLQyQm/1lERZHBIBocMScWpNI6mllQORyv1qJFTTscxSq00U9OconK2cjYRtfRYetQyDQEFBzRuFW+G/fujX/cnTqWgCG18Pa7L67rvvdde672XXvZqrb3RzjAMAxERERExJfvSLkBEREREbp/CnIiIiIiJKcyJiIiImJjCnIiIiIiJKcyJiIiImJjCnIiIiIiJKcyJiIiImJjCnIiIiIiJKcyJiIiImJjCnIiIiIiJOZZ2AVIyfv75Onl5+aVdhoiIiBSCg4M97u7lCtVWYe4ekZeXT26uwpyIiEhZo21WERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERO7p8LcjRs3OHfuXLH1d/r06WLrS0REROR2FFuY27BhAyEhIfj7+7Nt27bi6vaOHDhwAD8/P9v3Hj16sGfPnmLpe+nSpbz22mu275GRkaxZs6ZY+hYREREpLMfi6mjVqlVERkYyevTo4uryjgUEBHDw4EHb98zMzGLr+9KlSwW+r1+/vtj6FhERESmsYlmZ69KlC3v37mX58uW0atWKrVu38tRTTxESEkLDhg155plnOH36NPn5+YSHh7NixQrbtXl5ebRo0YKNGzcC8OWXXxIdHU3jxo1p27YtH3zwAfn5+QCMGDGCESNGFBjb19eXpKQkAMLDw4mLi6NZs2Z07NiRxMREfH19AejTpw9paWm8/vrrjBs3DoAjR44QExNDkyZNaNOmDR988AGGYdzyfj/55BPeeecdDhw4QEBAgG3shIQEAGJiYnjzzTd5+umnadSoEU8++SSHDx/m5ZdfpnHjxoSHh7N9+3ZbfzerIz09nX79+hEYGMhjjz3GgAEDyMjIKPLvkYiIiJRNxRLmVq9eTUBAAP379+fDDz9k8ODBPP/88yQmJrJ9+3YMw+Dtt9/G3t6ezp0788knn9iu3b17N1arlYiICPbu3cs///lP+vXrx759+5gxYwYLFy5k8eLFha7l8OHDbNy4kcWLF2Nv/3+39/777+Pj48PYsWOJi4sjPT2dXr168fjjj7Nnzx7mzJnDsmXLCgTNP9OpUyf69+9PQEAABw4c+MM2K1asYPz48ezbtw93d3d69OhBu3btSEpKom3btowfPx7glnXMmDEDb29vvvrqKzZs2MC1a9d49913Cz0fIiIiUrYV+wsQFStWZP369YSHh2OxWDh37hweHh6kp6cDv6ziHT58mOTkZOCXVa4OHTrg7OxMQkICERERPPHEEzg6OvLII4/w/PPPs3z58kKP37ZtW9zd3XF3d79puzVr1lCrVi169uyJk5MTtWvXpm/fvixduvT2b/5/6qhduzbOzs4EBARQs2ZNWrVqhZOTE4899hipqamFqsPFxYWvv/6a9evXc/XqVebPn/+X2soWERGR0lVsz8z9ysnJiXXr1rF8+XLs7OyoW7cuFosFR8dfhqpcuTItWrTg008/pXfv3mzdupWPP/4YgIsXL/L//t//K9BftWrVbMGnMCpVqlSodqmpqRw5csS2TQqQn5+Pg4NDoce6mQoVKtg+Ozg48MADD9i+29vb27ZRb1XH6NGjeeedd1iwYAEjRoygXr16jB49ukB7ERERuXcVe5jbuHEjH374IR999BEPPfQQAOPHj+fEiRO2Nl27dmXq1KlUqlSJevXqUadOHQCqVq1qW7H71ZkzZ/Dy8gJ+CUE3btywnfvflxAA7OzsClWnt7c3QUFBLFiwwHYsMzOTq1evFvJOb6646jh69Cjdu3dn4MCBXLp0ibfffpsBAwawd+/eYqlTREREzK3Yt1mzsrKwt7fH1dUVwzDYuXMnn376KTk5ObY2oaGhtme/unbtajveuXNntm7dysaNG8nLy+Po0aO89957dO7cGYBatWpx4MAB0tPTyc7O5u233y50aAJwdnYmKysLgKioKA4dOsSaNWvIzc0lIyOD2NhYJk+eXKi+XFxcsFgshXph4mZuVce8efMYP348FosFd3d3ypUrh4eHxx2NKSIiImVHsYe5Tp060bRpUyIjIwkODmbu3Ln06tWLU6dOYbVaAXB0dCQ6OprMzEzatWtnu7Zhw4bMnj2b9957j4CAAAYMGMDTTz9NbGwsAN27d8fPz48nn3yS1q1bU6VKFXx8fApdW5cuXZg5cyavvPIKVatWZf78+axYsYKmTZvSoUMHatasWegwFxYWxuXLl/H39+fnn38uwgwVdKs6xo0bR35+PhERETRp0oT//Oc/zJ49+7bHExERkbLFzrjTpSUxhczMq+Tm5pd2GSIiIlIIjo72eHiUL1Tbe+qf8xIREREpa4r9BYiy4I033mD16tV/er5///62rV8RERGR0qRt1nuEtllFRETMQ9usIiIiIvcIhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE3Ms7QKkZLhlZ2JYraVdhshdZbiWx2LvVtpliIiUKIW5e0TmpOHknDxe2mWI3FVec1aCm8KciNxbtM0qIiIiYmIKcyIiIiImpjB3BzIyMrh27VpplyEiIiL3sL98mEtKSsLX17e0y/idCxcu0LZtWy5dugTAvHnz6NevXylXJSIiIvcavQBxm7KzswusysXGxpZiNSIiInKvuu2VuZSUFHx9fVmyZAnNmjXD39+fV199FYvFQnx8PDExMQXah4eHk5CQAEBMTAwjRowgLCyM0NBQLBYLR44cISYmBj8/P5o3b87s2bMxDMN2/YIFC2jdujWNGjVi0KBBWCwWAKxWK1OmTKFdu3b4+fkREhLC+PHjbdfu37+f6OhoAgICaN26NW+88Qa5ubkAWCwWxo0bR8uWLQkJCWHIkCFcuHDhlveel5dH+/btAWjfvj0bNmwocM8JCQn06NGDKVOmEBgYSHBwMEuWLGHlypWEhYXh7+9PXFycrb9b1REfH0/Lli0JDAykc+fObNmypci/XyIiIlI23fE26+eff87atWvZtGkTP/30E2PHji3UdXv27GH58uWsWbOG3Nxc+vTpQ1BQEElJSSxbtoyEhARWrFhha5+amsq6devYvHkzhw4dYunSpQAsWrSIXbt2sWjRIg4ePMicOXNYvnw5e/fuBWDYsGHExMRw4MABFi5cyKZNm2xhaOTIkfz0008kJCTw5Zdfct999zFgwIACIfKPODg4sG7dOgDWrVvHE0888bs2X3/9NZUrV2bv3r0MGjSISZMmkZSUxIYNG/jggw9YvXo1+/fvv2Ude/fuZcWKFaxatYqkpCS6du3KqFGjyMnJKdQ8i4iISNl2x9us//rXv6hYsSIAgwYN4oUXXqB37963vO6xxx6jcuXKAHzyySe4uLjw0ksvYWdnR40aNVi4cCFubm789NNPAAwcOBAXFxcqV65MkyZNSE5OBqBbt2506tQJT09PMjIyyM7Opnz58qSnpwPg4uLCxo0bqVChAk2aNGHHjh3Y29tz8eJFNm/ezMaNG/H09AR+CVUBAQEcOXKERx999I7mxc3NjV69emFnZ0fz5s3Jy8ujb9++lCtXjr///e9UqlSJ1NRUatasedM6XFxcuHLlim1Vr2vXrnTv3h07O7s7qk9ERETKhjsOcw899JDtc5UqVbBarVy5cuWW11WqVMn2+fz581SpUqVAQKlZsyaALcx5eHjYzjk5OZGXlwfA9evXGTduHPv378fb25v69etjGAb5+fnALyt38fHxjB07lvPnz9OiRQvGjBlDRkYG8EsY/C0HBwdSUlLuOMxVqFDBdj/29r8sgLq7u9vO29vbk5+fT2pq6k3rePzxx4mPj2fJkiXMnz8fV1dXYmJieOGFF2z9ioiIyL3rjsNcenq6LXilpKRQrlw5KleuzIkTJ2xt8vPzuXz5coHrfhvcvL29OXv2LIZh2I5/+eWXWCwWqlSpctPxR48ezQMPPMDu3btxcXEhPz+fJk2aAHDjxg1++OEHxowZg6OjI6dOnWL06NFMnDiRUaNGAbBx40a8vLxs/f3www9Ur1799ifkD+7vZn5dnfyzOtLS0vD09GTBggVYrVYSExMZMGAAjzzyCKGhoXdcp4iIiJjbHS/tTJ8+HYvFQnp6Om+++SYdOnSgVq1aHD9+nO+//57c3Fzmz59/05/HFhoaSm5uLvPmzcNqtZKcnMzEiRO5cePGLce3WCy4uLhgb2+PxWJh6tSpWCwWcnJysLOzY+jQobz//vvk5ubi5eWFo6MjHh4eVK5cmdDQUN544w0yMzPJyclh7ty5dOnShZ9//vmW47q4uNjGvxO3quPbb7+lX79+HDt2DGdnZ9tW7G9XKkVEROTedcdhrkaNGrRv354nn3wSPz8/Ro4cSatWrYiKiqJ37960aNGCzMxM/P39/7QPd3d3FixYQGJiIs2bNycmJoannnqK7t2733L80aNHc+zYMQIDA3n88cexWCy0aNGCEydO4OzszNy5c9myZQtBQUGEh4fj5eXFK6+8AsDUqVNxd3enY8eOBAcHs2PHDubPn19ghezPPPjgg7Ru3Zru3bvz0UcfFX7C/sDN6mjbti19+vThhRdeoFGjRgwePJiRI0fSsGHDOxpTREREygY741avbv6JlJQUIiIi2LJlC9WqVSvuuqSYnRvUk5yTx0u7DJG7ymvOSrLcbv0/YyIif3WOjvZ4eJQvVFs9QS8iIiJiYvoXIP7A4cOH6dWr15+e9/HxYf369SVYkYiIiMgfu+0wV61aNY4fL5vbdg0aNODgwYOlXYaIiIjILd32M3NiLjfOpmBYraVdhshdZbiWx2LvVtpliIjcsaI8M6dt1nvENVcPch3zS7sMERERKWZ6AUJERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTm/qJ++umn0i5BRERETOCuh7mkpCR8fX3v9jB/aN68efTr169Uxr4TU6ZMYe7cuaVdhoiIiJiAY2kXcDfFxsaWdgm3JTMzs7RLEBEREZMo1pW5+Ph4WrZsSWBgIJ07d2bLli22cwsWLKB169Y0atSIQYMGYbFYbOdWrVpFZGQkjRs3JioqijVr1tjOxcTEMHnyZKKjo2nUqBHR0dEcOHAAgJSUFHx9fVmyZAnNmjXD39+fV1991dZ3fHw8MTExACQkJPD0008zYcIEgoODCQkJYdSoUeTk5ACQl5fHrFmzaNasGU2bNuX111/nqaeeIiEhoVD3fuTIEWJiYvDz86N58+bMnj0bwzAAWL16NdHR0QQFBeHn50f//v25dOmSrcY+ffrQuXNnAgMDeeutt1i7di1r167lySefBGDZsmW0atWKgIAAoqKiWLVq1W39/oiIiEjZU2xhbu/evaxYsYJVq1aRlJRE165dGTVqFLm5uQCkpqaybt06Nm/ezKFDh1i6dCnwS8iaPHkyo0ePZv/+/YwcOZKxY8fyxRdf2PpesWIFw4YNY9++fbRu3ZoXXnihwOrV559/ztq1a9m0aRM//fQTY8eO/cMav/nmGzw9Pdm1axfvvPMOGzZs4PPPPwd+CZtr1qxh0aJFbN++HXd3dw4ePFioe798+TJ9+vQhKCiIpKQkli1bRkJCAitWrODw4cNMmDCBMWPGkJSUxMaNGzl9+jSLFy+2XZ+YmMgrr7zCtm3biI2NJSoqyhZqz5w5w6RJk3j33Xc5cOAAw4YNY/z48WRkZBTtN0hERETKpGILcy4uLly5coWVK1dy9OhRunbtSmJiIo6Ov+zkDhw4EBcXFypXrkyTJk1ITk4G4OOPP6Z79+6EhITg4OBASEgI3bt3Z/ny5ba+O3fuTHBwMM7OzsTGxlKuXDm2bdtmO/+vf/2LihUr4uXlxaBBg9i0aRNWq/V3Nbq6uhIbG4uTkxMNGjTA19eXU6dOAb+snj3//PPUrl0bZ2dn/vnPf+Ll5VWoe9+2bRsuLi689NJLODs7U6NGDRYuXEhoaCh169Zl3bp1NGjQgCtXrpCRkUHFihVJT0+3XV+9enVCQkIoX768bb5+5eDggGEYLF++nK+//pqQkBAOHTpEpUqVCvk7IyIiImVZsYU5Pz8/4uPjOXjwID179qRZs2bMmTOH/Px8ADw8PGxtnZycyMvLA+DChQtUr169QF/VqlUjNTXV9v1vf/ub7bOdnR3e3t6cP3/eduyhhx6yfa5SpQpWq5XLly//rkZPT0/s7OwK1PHrVujZs2epWrWq7ZyDgwM+Pj6Fuvfz589TpUqVAn3XrFkTb29v7O3tWbx4MSEhIURHRzNv3jwsFottXOCmwczHx4clS5aQmppKbGwsgYGBTJw4kRs3bhSqNhERESnbiu0FiLS0NDw9PVmwYAFWq5XExEQGDBhAfHz8Ta+rVq2abZXuV2fOnCmwKvbbVaz8/HzS0tKoUqVKgfM1a9YEfnmOrly5cgXCY2H4+PiQlpZm+24YBmfPni3Utd7e3pw9exbDMGyB7ssvv8RisZCRkcFXX33F2rVrefDBB4Hfv5jx2xD4vy5evEheXh5vv/02+fn5fPPNNwwaNIiHH36Ynj17FukeRUREpOwptpW5b7/9ln79+nHs2DGcnZ3x9PQE4MSJEze9rkuXLqxYsYLExETy8vJsz9517tzZ1mbVqlV89913WK1W3n77bQzDICwszHZ++vTpWCwW0tPTefPNN+nQoQNOTk5Fqr979+68//77nDp1yjZOYZ9LCw0NJTc3l3nz5mG1WklOTratnlksFhwdHXFyciI3N5fPPvuMXbt22V68+CPOzs5kZWUBv4TkPn36kJiYiL29PZUrVwYoclgVERGRsqnYVubatm3L6dOnbS8neHp6MnLkSNuK2Z9p164dFouFCRMmkJaWRuXKlRk2bBgdO3a0tQkMDGTcuHH88MMP1K9fn/fff5/777+fK1euAFCjRg3at2/P9evXiYqK4tVXXy1y/b169eL8+fM89dRTODg48MQTT+Dt7V2oUOju7s6CBQuYNGkSCxcupFy5cvTs2ZPu3btz+fJlTpw4QVhYGC4uLtSvX58ePXqwd+/eP+3viSeeYMiQIYSGhrJ9+3bi4uIYM2YMGRkZ3H///fTo0YN27doV+R5FRESk7LEzfvvw1l9QTEwMgYGBDBw48HfnUlJSiIiIYMuWLVSrVu2OxvnPf/5D1apVbVuhhmEQHBzMjBkzaNas2R31/VeQmXmV3Nz80i5DRERECsHR0R4Pj/KFaqt/zuv/t3btWoYNG0ZWVha5ubksXLgQgEaNGpVuYSIiIiI3Uab/BYii+Oc//8m4ceNo3bo1VquVRx55hAULFlC+fHmCgoL+8Eed/Gr9+vWFfvNVREREpDj95bdZpXhom1VERMQ8tM0qIiIico9QmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmCtmSUlJ+Pr6ApCWloafnx9paWk3vSYlJQVfX19SUlJKokQREREpQxxLu4CyzMfHh4MHD5Z2GSIiIlKGmX5l7vjx4zz33HMEBgby2GOPMWbMGLKyskhISODpp59mwoQJBAcHExISwqhRo8jJyQHAMAwWL15M27ZtCQgIoEePHnz33XeFHvfIkSPExMTg5+dH8+bNmT17NoZhFGjzvytuZ86cITY2Fn9/f0JCQhgzZgxWq/V3fb/11lu0aNGCH374gdzcXMaMGUOzZs0ICgqiR48efP31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oFmzZmzevJng4GAA/v73vxMXF8eYMWPIyMjg/vvvp0ePHrRr1w47Ozs++OADJk+ezPz588nPzycoKIi5c+cW6j6ee+45rl+/zjPPPENubi7dunWjQoUKANSsWZNhw4bx6quvcv36dby9venWrRv//ve/OXHiBI8++ijwy1briy++yPTp0239tm3bltOnT/PCCy+QmZmJp6cnI0eOpGHDhrc95yIiIlJ22Bm/fXBLStWxY8eIiYlh9+7duLi4FGvf5wb1JOfk8WLtsyR4zVlJlptXaZchIiJSohwd7fHwKF+4tne5FikEi8VCWloas2bNIjo6utiDnIiIiJRdCnOFsHDhQt58880/PR8VFcW4ceNuu/9z587RvXt36tWrx4svvnjb/YiIiMi9R9us9whts4qIiJhHUbZZFebuETfOpmAU8p8m+ysxXMtjsXcr7TJERERKlJ6Zk9+55upBrmN+aZchIiIixazUf86ciIiIiNw+hTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExx9IuQEqGW3YmhtVa2mWIiIiUGYZreSz2bqVdhsLcvSJz0nByTh4v7TJERETKDK85K8Gt9MOctllFRERETExhTkRERMTE7ukwd/r06dIuQUREROSO3LNh7ujRo7Rv377Uxu/Xrx/z5s0rtfFFRESkbLhnX4DIysoiJyen1MafP39+qY0tIiIiZUeZWJk7cuQIMTEx+Pn50bx5c2bPno1hGKxevZro6GiCgoLw8/Ojf//+XLp0iTNnzvDcc88B4Ofnx8GDBzEMg8WLF9O2bVsCAgLo0aMH3333nW2MzMxMhgwZgr+/PxERESxZsoT69euTkpICwPHjx3nuuecIDAzkscceY8yYMWRlZQGQkJBAdHQ0ffr0ISAggLVr1xITE0N8fDzALcfevHkzkZGR+Pv7065dO+bMmVNSUysiIiJ/caYPc5cvX6ZPnz4EBQWRlJTEsmXLSEhI4L333mPChAmMGTOGpKQkNm7cyOnTp1m8eDHVq1fnvffeA+DgwYP4+fmxbNkyFi5cyOzZs0lMTCQ6Oppnn32WCxcuAPDKK6+QlZXFli1bWLVqFdu2bSMvLw/4Jej94x//oHbt2uzcuZOPP/6YU6dOMWzYMFudR44cISoqij179tC6desC93CzsbOzs3n11VeJi4vj66+/Zvr06bz33nscPny4hGZYRERE/spMH+a2bduGi4sLL730Es7OztSoUYOFCxcSFRXFunXraNCgAVeuXCEjI4OKFSuSnp7+h/0sXbqU/v37U69ePZycnOjSpQu1atVizZo1pKens3v3bkaOHEmFChWoWLEiI0eOtF27ZcsWnJyceOWVV3B1dcXLy4vXXnuNrVu3cv78eQCcnJzo0KEDzs7OuLq6FnpsAFdXV1avXk1iYiK1atXi66+/pkGDBndpRkVERMRMTP/M3Pnz56lSpQp2dna2YzVr1sRqtTJt2jTWrl2Lm5sbvr6+WCwWDMP4w35SU1OZMmUK06ZNsx3Lzc3l0Ucf5ezZswBUq1bNdq569eq2zxcvXsTHxwcHBwfbsV/bpqamAuDl5YW9/R9n55uN7erqykcffcScOXN4+eWXsVgstG3bltGjR/PAAw8Uep5ERESkbDJ9mPP29ubs2bMYhmELdF9++SXHjh3jq6++Yu3atTz44IMAxMbG3rSfQYMGERkZaTuWnJxMhQoVyM7OBn4JXQ8//LDt86+qVq1KWloaeXl5tkCXnJwM/BLifvzxxwJhsyhjWywWMjIymD59OgD//e9/GTp0KPPmzWP48OGFnygREREpk0y/zRoaGkpubi7z5s3DarWSnJzMxIkTWb58OY6Ojjg5OZGbm8tnn33Grl27bG+wuri4ANheUujWrRtz587l5MmTAOzatYvIyEj2799PpUqVCAsL49///jdXrlzhypUrTJ061VZDy5YtAZg2bRrZ2dmcP3+eN954g+DgYKpWrXrLe7jZ2FevXuW5555j7dq1GIZBpUqVsLe3x8PDo/gmUUREREzL9Ctz7u7uLFiwgEmTJrFw4ULKlStHz5496datGyNGjCAsLAwXFxfq169Pjx492Lt3LwB169bF39+fFi1aMHv2bHr37o1hGLz44otkZGRQuXJl4uLiiIiIAOCNN94gLi6O0NBQPDw86NixI9u2bcPJyYn777+fhQsXMnnyZFuwi4iIKPACxM3cauw333yTWbNmERcXh6urK0888QS9e/cu/skUERER07Ez/uwhMingq6++wt/f3/bywvHjx+nYsSOHDh2yrfL9lZ0b1JOck8dLuwwREZEyw2vOSrLcvO5K346O9nh4lC9UW9Nvs5aUKVOmMHfuXHJzc7FYLMydO5emTZuaIsiJiIhI2aUwV0jTp0/n0KFDBAcHEx4ejoODQ4Hn5kRERERKg+mfmSspderUYdGiRaVdhoiIiEgBembuHnHjbAqG1VraZYiIiJQZhmt5LPZud6Xvojwzp5W5e8Q1Vw9yHfNLuwwREREpZnpmTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETMyxtAuQkuGWnYlhtZZ2GSKmZLiWx2LvVtpliIj8IYW5e0TmpOHknDxe2mWImJLXnJXgpjAnIn9N2mYVERERMTGFORERERETu+fDXEZGBteuXSvtMkRERERuS4mFubi4OOLi4kpquD81b948+vXrB8CFCxdo27Ytly5dKtU6/khMTAzx8fElWJGIiIiYUYm9ADFu3LiSGuqmYmNjbZ+zs7NLbVXut3WIiIiI3K4ircylpKTg6+tLSkqK7Vh8fDwxMTEkJCTw9NNPM2HCBIKDgwkJCWHUqFHk5OQAMGLECEaMGAGAYRjMmzeP5s2b4+/vz9ixY+nRowcJCQnA71el/nfcCxcu8Morr9CsWTOaN29OXFwcFoulUPfwa715eXm0b98egPbt27NhwwYA1q9fT1RUFP7+/kRHR7N7927btTExMbz55ps8/fTTNGrUiCeffJLDhw/z8ssv07hxY8LDw9m+fXuR6vjVqlWriIiIwM/Pj+HDh3P9+nXbue+//56ePXvSpEkTwsLCGD58eKHvV0RERMq2Yt1m/eabb/D09GTXrl288847bNiwgc8///x37VavXs2iRYt455132LNnD66urnzzzTeFGiM/P58XX3wRe3t7Nm/ezNq1a8nIyCjyFq6DgwPr1q0DYN26dTzxxBPs2LGD119/nbi4OPbt28fAgQMZOHAg33//ve26FStWMH78ePbt24e7uzs9evSgXbt2JCUl0bZtW8aPH1+kOgASExMZN24cEyZMYP/+/TRs2JBvv/3Wdn7s2LGEhISwb98+Pv74Y44ePcqqVauKPI6IiIiUPcUa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/fj4+HDp0iWuX79OuXLlbLX+ytvbm6CgIBYsWGA7lpmZydWrVwtdq4iIiJRtptxmzcrKwt7eHldXVwzDYOfOnXz66afk5OTQtWtXvvjiC3bt2kVeXh47duzg888/t13brVs35s6dy8mTJwHYtWsXkZGR7N+//7ZqsVgsuLi4YG9vj8ViYerUqVgsFnJycm55bcOGDalduzaTJ0/m+vXrpKen8+abb9rOR0VFcejQIdasWUNubi4ZGRnExsYyefLk26pVREREyh5Trsx16tSJr7/+msjISBwcHKhZsya9evVi6dKl+Pr6MnbsWMaMGUNmZiYBAQGEhITg5OQEQO/evTEMgxdffJGMjAwqV65MXFwcERERt1XL6NGjiYuLIzAwkPLlyxMaGkqLFi04ceLELa+1t7fnzTff5PXXXyckJARvb2/Cw8P573//C0DVqlWZP38+06ZNY8KECTg4OBAaGsqoUaNuq1YREREpe+yMMvZzLk6dOkV+fj61atWyHRs4cCA1a9Ys8HLBX0F2djYHDx4kMDDQ9hzc1q1bef3119m1a1exjpWZeZXc3PxbNxQREZFS5+hoj4dH+UK1NeU268388MMP9OrVi+TkZACSkpLYtWsXLVu2LOXKfs/JyYl//vOfrFy5kvz8fC5evMj7779PWFhYaZcmIiIiJlHmVuYA5s6dy4oVK7hy5QpVq1alf//+REVF3fK6oKAgrFbrn55fv349Pj4+xVkqBw4cYOrUqZw8eRIXFxfatm3Lq6++WuAN1+KglTkRERHzKMrKXJkMc/J7CnMiIiLmcU9vs4qIiIjcSxTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmREREREzMsbQLkJLh4KDcLiIiYhZF+e+2nWEYxl2sRURERETuIi3XiIiIiJiYwpyIiIiIiSnMiYiIiJiYwpyIiIiIiSnMiYiIiJiYwpyIiIiIiSnMiYiIiJiYwpyIiIiIiSnMiYiIiJiYwlwZcPHiRV588UUCAgIICgrijTfeIDc39w/b7tixg6ioKBo1akS7du3Ytm1bCVdrfkWZ719t3ryZiIiIEqqw7CjKXH/00Ue0bdsWPz8/2rZty9KlS0u4WvMr7Hzn5+cTHx9Py5Yt8fPzIyoqig0bNpRCxeZ1O3+PnDhxgoYNG5KUlFRCVZYdRZnvfv368fe//x0/Pz/br507d5ZwxUVkiOk988wzxssvv2xcu3bNSE5ONiIjI4333nvvd+1OnTpl/P3vfze++OILIycnx1i/fr3RoEED49y5c6VQtXkVdr4NwzCsVqvx7rvvGvXr1zfCwsJKuFLzK+xcf/HFF0ZAQIBx8OBBIz8/3/jmm2+MgIAAY9OmTaVQtXkVdr4XL15shIeHGz/99JNhGIaxdetWo169erbvcmtF+XvEMAzj2rVrRvv27Y26desae/fuLcFKy4aizHdQUJCRlJRUwhXeGYU5kzt9+rRRt27dAoFs/fr1Rmho6O/azpgxw3j22WcLHOvbt68xe/bsu15nWVGU+TaMX/4C6du3rzFz5kyFuSIqylx/+OGHxjvvvFPg2EsvvWSMHz/+rtdZVhRlvvPy8oyrV68ahmEYN27cMFavXm34+fkZ6enpJVavmRX17xHDMIzhw4cbs2bNUpi7DUWZ7+TkZKNevXpGVlZWSZZ4x7TNanLff/89FSpUoHLlyrZjtWrVIi0tjZ9//rlA2x9++IG6desWOFa7dm2OHTtWIrWWBUWZb4B///vfzJ8/nxo1apRkmWVCUea6Z8+ePP/887bvFy9eZP/+/Tz66KMlVq/ZFWW+7e3tcXNzY/fu3TRs2JBRo0YxePBgKlWqVNJlm1JR/x759NNP+emnnxgwYEBJlllmFGW+v/32W8qXL8+QIUMIDg6mffv2rF69uqRLLjLH0i5A7szVq1cpV65cgWO/fr927Rru7u43bevq6sq1a9fufqFlRFHmG8Db27vEaitrijrXvzp//jz9+/fn0UcfpX379ne9zrLiduY7MDCQb7/9lv379/Piiy/i5eXFE088USL1mllR5vrkyZPMnDmTjz76CAcHhxKts6woynxbrVYaNWrEkCFDqFOnDklJSQwcOJDy5cvTrl27Eq27KLQyZ3Jubm5cv369wLFfv5cvX77A8XLlypGdnV3gWHZ29u/ayZ8rynzLnbmduT506BBdunTh4YcfZu7cuTg66v9XC+t25tvZ2RlHR0dCQkLo0KEDa9euvet1lgWFnesbN24wZMgQRo4ciY+PT4nWWJYU5c92x44dmT9/PvXr18fJyYnmzZvTsWNHNm7cWGL13g6FOZOrU6cOly9f5sKFC7ZjJ0+exNvbm/vvv79A27p16/L9998XOPbDDz9Qp06dEqm1LCjKfMudKepcr169mt69e9OrVy+mT5+Os7NzSZZrekWZ78mTJzN58uQCx6xWKxUqVCiJUk2vsHP97bffcvr0aUaNGkVAQAABAQEAxMbGMmbMmJIu27SK8md79erVvwtuVqsVFxeXEqn1dinMmdzf/vY3/P39mThxIhaLhTNnzjBnzhy6dOnyu7ZPPvkk+/btY8OGDeTm5rJhwwb27dtHhw4dSqFycyrKfMudKcpcb968mTFjxhAfH0+fPn1KoVrzK8p8BwQEsHz5cvbv309+fj5bt25lw4YNdO3atRQqN5/CznVAQACHDx/mwIEDtl8A8+bNU5grgqL82bZYLIwfP56jR4+Sn5/P9u3bWbduHd27dy+FyougtN/AkDt3/vx5Y+DAgUZgYKARHBxsTJ482cjNzTUMwzAaNWpkfPbZZ7a2O3fuNJ588kmjUaNGRmRkpLF9+/bSKtu0ijLfv/r444/1NuttKOxct2/f3qhXr57RqFGjAr9ee+210izfdIryZ3vVqlVGmzZtjMaNGxvR0dHGzp07S6tsU7qdv0cMw9DbrLepsPOdn59vvP3220ZYWJjRoEEDIzIy0ti4cWNpll4odoZhGKUdKEVERETk9mibVURERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETOz/A/KMkahfbcVXAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.barh(X.columns.tolist(),height=0.5,width=tree.feature_importances_,align=\"center\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.8        0.2       ]\n",
      " [0.95573603 0.04426397]\n",
      " [0.95407861 0.04592139]\n",
      " ...\n",
      " [1.         0.        ]\n",
      " [0.95003622 0.04996378]\n",
      " [1.         0.        ]]\n",
      "Accuracy on training set: 0.959\n",
      "Accuracy on test set: 0.933\n"
     ]
    }
   ],
   "source": [
    "#随机森林\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest = RandomForestClassifier(n_estimators=10, random_state=2) \n",
    "forest.fit(X_train, y_train)\n",
    "Predict_proba = forest.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "print(\"Accuracy on training set: {:.3f}\".format(forest.score(X_train, y_train))) \n",
    "print(\"Accuracy on test set: {:.3f}\".format(forest.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 10 artists>"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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lMS6devYtGkThw4dYsmSJQAsXLiQnTt3snDhQg4ePEhMTAzLli1jz549AAwaNIjIyEj279/PggUL+PLLL21haOjQofz888/Exsby9ddfU6RIEfr06ZMrRN6Ki4sL69atA2DdunU8//zzf2hz4MABSpUqxZ49e4iKimLChAnEx8ezYcMGPv74Y1atWsW+ffvuWMeePXtYvnw5K1euJD4+ng4dOjBs2DAyMzPzNM4iIiKSv933NOs//vEPihcvDkBUVBRvvPEG3bp1u+N2zz77LKVKlQLgs88+w8PDg7///e84OTlRvnx5FixYgJeXFz///DMAffv2xcPDg1KlSlG7dm0SEhIA6NixI23btqVEiRKkpqaSkZFB4cKFSUlJAcDDw4ONGzdSrFgxateuzfbt23F2dubixYts2rSJjRs3UqJECeDXUBUUFMThw4d55pln7mtcvLy86Nq1K05OTjRo0IDs7Gx69OhBoUKF+Otf/0rJkiVJSkqiQoUKt63Dw8ODK1eu2K7qdejQgU6dOuHk5HRf9YmIiEj+cN9h7sknn7S9Ll26NFarlStXrtxxu5IlS9penz9/ntKlS+cKKBUqVACwhTlvb2/bOjc3N7KzswG4fv06o0ePZt++ffj6+lK1alUMwyAnJwf49crdzJkzGTVqFOfPn6dhw4aMHDmS1NRU4Ncw+FsuLi4kJibed5grVqyY7XicnX+9AFq0aFHbemdnZ3JyckhKSrptHc899xwzZ85k8eLFzJs3D09PTyIjI3njjTds+xUREZGC677DXEpKii14JSYmUqhQIUqVKsXx48dtbXJycrh8+XKu7X4b3Hx9fTl79iyGYdiWf/3111gsFkqXLn3b/ocPH87jjz/Orl278PDwICcnh9q1awNw48YNTpw4wciRI3F1deXUqVMMHz6c8ePHM2zYMAA2btyIj4+PbX8nTpygXLly9z4gtzi+27l5dfLP6khOTqZEiRLMnz8fq9VKXFwcffr0oVq1ajRu3Pi+6xQRERFzu+9LO1OnTsVisZCSksL7779PmzZtqFixIseOHePHH38kKyuLefPm3fb72Bo3bkxWVhZz5szBarWSkJDA+PHjuXHjxh37t1gseHh44OzsjMViYfLkyVgsFjIzM3FycmLAgAF89NFHZGVl4ePjg6urK97e3pQqVYrGjRszbtw40tLSyMzMZPbs2bRv355ffvnljv16eHjY+r8fd6rj+++/p2fPnhw9ehR3d3fbVOxvr1SKiIhIwXXfYa58+fK0atWKF154gYCAAIYOHUrTpk1p3bo13bp1o2HDhqSlpREYGPin+yhatCjz588nLi6OBg0aEBkZyUsvvUSnTp3u2P/w4cM5evQoderU4bnnnsNisdCwYUOOHz+Ou7s7s2fPZvPmzQQHBxMWFoaPjw8DBw4EYPLkyRQtWpQXX3yRunXrsn37dubNm5frCtmfeeKJJ2jWrBmdOnXi008/zfuA3cLt6mjRogXdu3fnjTfeoGbNmvTr14+hQ4dSo0aN++pTRERE8gcn406Pbv6JxMREmjRpwubNmylbtqy96xI7OxfVhcyTxxxdhtiZT8wK0r3u/J8PERExF1dXZ7y9C+epre6gFxERETEx/QaIW/juu+/o2rXrn6738/Nj/fr1D7EiERERkVu75zBXtmxZjh3Ln9N21atX5+DBg44uQ0REROSO7vmeOTGXG2cTMaxWR5chdmZ4Fsbi7OXoMkRExM7u5p45TbMWENc8vclyzXF0GSIiImJnegBCRERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMRcHV2APBxeGWkYVqvd92t4Fsbi7GX3/YqIiEjeKMwVEGkTBpN58pjd9+sTswK8FOZEREQcRdOsIiIiIiamMCciIiJiYgpzj6iff/7Z0SWIiIiICTzwMBcfH4+/v/+D7uaW5syZQ8+ePR3S9/2YNGkSs2fPdnQZIiIiYgL5+gGI3r17O7qEe5KWluboEkRERMQk7HplbubMmTRq1Ig6derQrl07Nm/ebFs3f/58mjVrRs2aNYmKisJisdjWrVy5kvDwcGrVqkXr1q1Zs2aNbV1kZCQTJ04kIiKCmjVrEhERwf79+wFITEzE39+fxYsXU79+fQIDA3nnnXds+545cyaRkZEAxMbG8vLLLzN27Fjq1q1LSEgIw4YNIzMzE4Ds7GymT59O/fr1qVevHu+++y4vvfQSsbGxeTr2w4cPExkZSUBAAA0aNGDGjBkYhgHAqlWriIiIIDg4mICAAHr16sWlS5dsNXbv3p12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sHPnTsLDw9m3b98d+23cuDFZWVnMmTMHq9VKQkIC48eP58aNG3+6TfXq1fnLX/7CpEmTuH79OhcuXGDChAlcunTJ1sbNzY3Q0FCef/55Bg0ahNVqZevWrfTp04fExEQ8PT0pVqwYrq6uPPbYY3kZIhEREcnnTH1l7rHHHmPBggVMnDjRFuyaNGnCoEGD2LJly2237datG4Zh8Oabb5KamkqpUqWIjo6mSZMmd+y3aNGizJ8/nwkTJrBgwQIKFSpEly5d6NSpE/Hx8bfcxs3NjTlz5jB+/HgaN26Mq6srrVu3JioqinPnzuVqO2zYMMLDw5k5cyb9+vUjJSWFl156CYvFQpkyZZg2bdptp3RFRESk4HAyfv99GpIvnYvqQubJY44uQ0REHiKfmBWke/k4ugy5B66uznh7F85TW1NPs4qIiIgUdKaeZn1QgoODb/sAxfr16+94T56IiIjIw6Bp1gLixtlEjDs84SsiIvmL4VkYi7OXo8uQe3A306y6MldAXPP0Jss1x9FliIiIiJ3pnjkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExV0cXIA+HV0YahtXq6DJERB4Kw7MwFmcvR5ch8lAozBUQaRMGk3nymKPLEBF5KHxiVoCXwpwUDJpmFRERETExhTkRERERE1OYExERETExh4W5xMRE/P39SUxMdFQJD5y/vz/x8fGOLkNERETyMV2ZExERETExh4e5zz//nKZNm1KvXj2GDx+OxWIhNjaWiIgIunfvTlBQEGvXriUjI4PJkyfTqFEjateuTWRkJN999x0AUVFRjBs3zrbPIUOGUL9+fQzDAGDr1q2EhoYCsHTpUpo2bUpQUBCtW7dm5cqVtu0SEhLo3bs3wcHBhIaGMm3aNKx5/DqPzMxMJkyYQHBwMHXr1mXevHm51p88eZJevXrRuHFjqlevzvPPP8/WrVsBiI6Opnv37rnajx49mkGDBgEwc+ZMGjVqRJ06dWjXrh2bN2++myEWERGRfMzhYW7//v2sWLGCNWvWcPz4ccaPHw/A4cOHad26Nbt376ZZs2aMHDmSXbt2sWjRIr755huaNm1Kt27dSE5OpmnTpuzYscO2z127dmGxWDh27Nev4tiyZQtNmzblzJkzTJgwgX/961/s37+fQYMGMWbMGFJTU7l27RrdunWjcuXK7Nixg6VLl7J7925mzpyZp+OIiYlh27ZtrFq1ii1btnD8+PFc6/v27UuVKlX497//zf79+2nQoAEjR44EoH379sTFxZGSkgKA1Wpl/fr1REREsGfPHpYvX87KlSuJj4+nQ4cODBs2jMzMzPsdehEREckHHB7mhgwZQvHixXniiSeIiopi7dq15OTk4ObmRps2bXB3d8fJyYl169bx9ttv8+STT+Lu7k7Xrl2pUKEC69ato3HjxiQlJXHmzBmOHj2Kp6cn9evXJy4uDsMw2Lp1K82bN8fFxQXDMFi2bBkHDhwgJCSEQ4cOUbJkSbZt24bVamXAgAF4eHhQunRp+vXrx5IlS/J0HF988QU9evSgXLlyeHl5MXz4cJycnGzrP/zwQ/r27YthGCQlJVG0aFFbeKtevToVK1Zk3bp1AGzbto0iRYoQHByMh4cHV65cYcWKFRw5coQOHToQFxeHm5ub/X8YIiIiYjoO/9LgsmXL2l6XLl0aq9XK5cuX8fHxwdn516x55coVMjMzc7W9uW1iYiJFixalTp067Nixg2vXrlGvXj0qVqzIrl27qFWrFoZhEBgYiLOzM4sXL2bevHn07t2b7OxsIiIieOedd0hKSuLSpUvUrl3btn/DMMjMzOTixYuUKFHitseRmppK6dKlbe+LFi3K448/bnt/9OhR3nzzTc6fP0/FihUpXry4bRoYICIigs8//5wePXoQGxtL27ZtcXJyIiAggJkzZ9rq9vT0JDIykjfeeMM2PiIiIlJwOTzMpaSkUKRIEeDXJ1y9vLwoXrx4rqtaTzzxBB4eHpw5c4aKFSvalickJBAWFgZAkyZN2LFjB5mZmbz00ktUrFiR6dOns2nTJpo0aYKzszMXL14kOzubWbNmkZOTw7fffktUVBRPPfUUvr6+lC9fni+//NK2f4vFwsWLFylevPgdj8PX15czZ87Y3l+7do309HTbMfbr148PPvjAVu+mTZv46quvbO3btGnDe++9x8GDB/nmm2+Ijo4GIDk5mRIlSjB//nysVitxcXH06dOHatWq0bhx47sdbhEREclnHH5p55///CdXrlzh3LlzzJgxg06dOv2hjbOzM+3ateO9997j559/xmq1snDhQk6cOEF4eDgATZs2Ze/evRw6dIi6detSsWJFihUrxtKlS2nWrBnwazDq3r07cXFxODs7U6pUKQC8vb0JDQ3l6tWrzJs3D6vVyi+//MLgwYPp379/rmD5Zzp06MC8efM4efIkN27cYOLEiWRnZwNw9epVsrOzKVSoEAAnTpxg1qxZALYHLEqUKEGjRo0YPXo0QUFB+Pn5AfD999/Ts2dPjh49iru7u+0Kobe39z2PuYiIiOQfDr8yFxAQwHPPPYezszOtWrWif//+rF+//g/tBg0axMyZM+nWrRuXL1/G39+f+fPn89RTTwFQqlQpKleujLOzM0WLFgWgfv36bNq0ibp16wLw17/+lejoaEaOHElqaiqPPfYYnTt3pmXLljg5OfHxxx8zceJE5s2bR05ODsHBwcyePTtPx/Haa69x/fp1XnnlFbKysujYsSPFihUDoEKFCgwaNIh33nmH69ev4+vrS8eOHfnnP//J8ePHeeaZZ4Bfp1rffPNNpk6dattvixYtOH36NG+88QZpaWmUKFGCoUOHUqNGjXsecxEREck/nIzf3rglDnX06FEiIyPZtWsXHh4edt33uaguZJ48Ztd9iog8qnxiVpDu5ePoMkTumaurM97ehfPW9gHXInlgsVhITk5m+vTpRERE2D3IiYiISP6lMJcHCxYs4P333//T9a1bt2b06NH3vP9z587RqVMnnn76ad5888173o+IiIgUPJpmLSA0zSoiBYmmWcXs7maaVWGugLhxNhEjj7+aTETE7AzPwlicvRxdhsg90z1z8gfXPL3Jcs1xdBkiIiJiZw7/njkRERERuXcKcyIiIiImpjAnIiIiYmIKcyIiIiImpjAnIiIiYmIKcyIiIiImpjAnIiIiYmIKcyIiIiImpjAnIiIiYmIKcyIiIiImpjAnIiIiYmIKcyIiIiImpjAnIiIiYmIKcyIiIiImpjAnIiIiYmKuji5AHg6vjDQMq9XRZYjII8TwLIzF2cvRZYjIfVKYKyDSJgwm8+QxR5chIo8Qn5gV4KUwJ2J2mmYVERERMTGFORERERETK9Bh7vTp044uQUREROS+FNgwd+TIEVq1auWw/nv27MmcOXMc1r+IiIjkDwX2AYj09HQyMzMd1v+8efMc1reIiIjkH/niytzhw4eJjIwkICCABg0a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uQLixtlEDKvV0WWIiMgjwPAsjMXZy9FlyG3cTZjTNGsBcc3TmyzXe//yYxEREXk06QEIERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNTmBMRERExMYU5ERERERNzdXQB8nB4ZaRhWK2OLkP+x/AsjMXZy9FliIhIPqAwV0CkTRhM5sljji5D/scnZgV4KcyJiMj90zSriIiIiIkpzImIiIiYmMKciIiIiIkpzDlQfHw8/v7+ji5DRERETExhTkRERMTEFOZu4ciRI7z88ssEBATQpk0bZs+eTVhYGAC7d++mffv2BAUFER4ezpo1a2zbDRkyhOjoaHr37k1AQABNmjRh0aJFtvWpqan07t2bWrVq0aRJE7755ptc/SYkJNC7d2+Cg4MJDQ1l2rRpWP/3dSKxsbFERETQvXt3goKCWLt27UMYCREREXnUKcz9jsVioWfPntStW5f4+HgmT57MihUrADh69ChvvPEGr7/+OvHx8YwZM4bx48ezc+dO2/axsbFERkayb98+XnvtNSZOnEhKSgoA/fv3x9XVlR07dvDJJ5+wY8cO23bXrl2jW7duVK5cmR07drB06VJ2797NzJkzbW0OHz5M69at2b17N82aNXtIIyIiIiKPMoW539myZQsuLi707dsXd3d3/P396dmzJwDLli2jSZMmNG/eHBcXF2rVqkXHjh1ZsmSJbfvg4GDq16+Pq6sr7dq1Izs7m4SEBJKSkti/fz8DBw6kSJEilC5dmj59+ti227ZtG1arlQEDBuDh4UHp0qXp169frn27ubnRpk0b3N3d8fT0fHiDIiIiIo8sfWnw75w7dw4/Pz+cnf8v55YrVw6ApKQk9uzZQ1BQkG1ddnY25cuXt7338fGxvXZzcwMgJyfHdnXOz8/Ptv632yUlJXHp0iVq165tW2YYBpmZmVy8eNG279/WJSIiIqIw9zt+fn4kJydjGAZOTk4AJCcnA+Dr60vbtm0ZPXq0rX1qaiqGYdxxv76+vgCcOXOGihUrAr8Gx9+uL1++PF9++aVtmcVi4eLFixQvXhzAVo+IiIjITbrM8zthYWEYhsGcOXOwWq389NNPzJ8/H4D27duzbt06du3aRU5ODqdPn+aVV17ho48+uuN+/fz8aNCgARMmTODKlSucP3+eDz74wLY+NDSUq1evMm/ePKxWK7/88guDBw+mf//+CnEiIiLypxTmfsfLy4uYmBg2b95MnTp1GDBgAPXr18fNzY0aNWrw3nvv8d5771G7dm1eeeUVwsLCePvtt/O076lTp/LYY48RGhpKu3btqFevnm1dkSJF+Pjjj4mPj+fZZ5+ladOmODs7M3v27Ad1qCIiIpIPOBl5mSMsQNLS0vjpp58IDAy0LVu8eDHr169n2bJlDqzs/pyL6kLmyWOOLkP+xydmBelePnduKCIiBZKrqzPe3oXz1FZX5n4nOzubrl27sn37dgASExNZunQpoaGhDq5MRERE5I/0AMTvPPHEE0yfPp0pU6bw1ltvUbRoUdq2bUuPHj0cXZqIiIjIHyjM3ULTpk1p2rSpo8sQERERuSPdM1dA3DibiPG/Xw0mjmd4Fsbi7OXoMkRE5BF1N/fM6cpcAXHN05ss1xxHlyEiIiJ2pgcgRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExFwdXYA8HF4ZaRhWq6PLEBEpkAzPwlicvRxdhuRTCnMFRNqEwWSePOboMkRECiSfmBXgpTAnD4amWUVERERMTGFORERExMQU5kRERERMTGFORERExMRMG+a2bNnCSy+9REhICDVq1OCVV17h9OnTAKxfv54WLVoQFBREjx49GDFiBEOGDAHAMAwWLVpkW9+5c2d++OGHPPWZmJiIv78/EydOpHbt2owaNQqr1cqkSZNo2bIlAQEBhISEMGbMGAzDACAyMpKpU6fSpUsXAgICaNmyJRs2bMi1zx49elCrVi2ee+45Pv74Y/z9/W3rDx8+TGRkJLVr16Z58+Z8/PHHtn2LiIiImDLMnTt3jn79+vH6668TFxfHtm3bMAyDWbNmcfDgQQYPHszgwYPZs2cPL730ErGxsbZtly5dyoIFC5gxYwZxcXFERETw6quvcuHChTz3f/XqVb755hv69+/PwoUL2blzJwsXLuTgwYPExMSwbNky9uzZY2u/YsUKhg0bRnx8PM2bNyc6OpobN26QnZ1Nr169KFmyJLt27WL+/Pl8/vnntu1SUlLo2rUrzz33HLt37yYmJoalS5eyfPlyu4yjiIiImJ8pw1zx4sVZv349YWFhWCwWzp07h7e3NykpKaxevZrmzZsTFhaGq6srzZo1o2nTprZtlyxZQq9evXj66adxc3Ojffv2VKxYkTVr1uS5/xdffBF3d3eKFi1Kx44d+fjjj/Hx8SE1NZWMjAwKFy5MSkqKrX2LFi2oWrUq7u7utG3blvT0dC5evMihQ4c4ffo0I0aMwMvLizJlytC/f3/bdmvWrKFixYp06dIFNzc3KlWqRI8ePViyZIl9BlJERERMz5TfM+fm5sa6detYtmwZTk5OVKlSBYvFgqurK2fPnqVq1aq52pcrV8525S0pKYlJkyYxZcoU2/qsrCyeeeaZPPdfsmRJ2+vr168zevRo9u3bh6+vL1WrVsUwDHJycmxtfHx8bK9dXX8d8pycHFsI9frNdw+VLVvW9jopKYnDhw8TFBRkW5aTk4OLi0ueaxUREZH8zZRhbuPGjXzyySd8+umnPPnkkwCMGTOG48ePU6ZMGZKTk3O1T05Oxt3dHQBfX1+ioqIIDw+3rU9ISKBYsWJ57t/Jycn2evjw4Tz++OPs2rULDw8PcnJyqF27dp724+fnx6VLl7h+/TqFChWy1XqTr68vwcHBzJ8/37YsLS2Nq1ev5rlWERERyd9MOc2anp6Os7Mznp6eGIbBjh07+Pzzz8nMzKRDhw78+9//ZufOnWRnZ7N9+3a++uor27YdO3Zk9uzZnDx5EoCdO3cSHh7Ovn377qkWi8WCh4cHzs7OWCwWJk+ejMViITMz847b1qhRg0qVKjFx4kSuX79OSkoK77//vm1969atOXToEGvWrCErK4vU1FR69+7NxIkT76lWERERyX9MeWWubdu2HDhwgPDwcFxcXKhQoQJdu3ZlyZIl+Pv7M2rUKEaOHElaWhpBQUGEhITg5uYGQLdu3TAMgzfffJPU1FRKlSpFdHQ0TZo0uadahg8fTnR0NHXq1KFw4cI0btyYhg0bcvz48Ttu6+zszPvvv8+7775LSEgIvr6+hIWF8d///heAMmXKMG/ePKZMmcLYsWNxcXGhcePGDBs27J5qFRERkfzHychn33Nx6tQpcnJyqFixom1Z3759qVChQq6HCx4FGRkZHDx4kDp16tjug9uyZQvvvvsuO3futGtf56K66Heziog4iE/MCtK9fO7cUOR/XF2d8fYunKe2ppxmvZ0TJ07QtWtXEhISAIiPj2fnzp00atTIwZX9kZubG2+99RYrVqwgJyeHixcv8tFHHxEaGuro0kRERMQkTDnNejvNmjXjxIkT/O1vf+PKlSuUKVOGMWPGUKtWrTtuGxwcjNVq/dP169evx8/Pz261uri4MGvWLCZPnsyUKVPw8PCgRYsWvPPOO3brQ0RERPK3fDfNKremaVYREcfRNKvcrbuZZlWYKyBunE3EuM1VRxEReXAMz8JYnL3u3FDkf+4mzOW7aVa5tWue3mS55ty5oYiIiJhKvnsAQkRERKQgUZgTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTFXRxcgD4eLi3K7iIiIWdzNv9tOhmEYD7AWEREREXmAdLlGRERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kzg4sWLvPnmmwQFBREcHMy4cePIysq6Zdvt27fTunVratasScuWLdm6dWuu9XPnzuXZZ5+lZs2aREZG8tNPP9nWXbt2jX/84x8EBwcTGBjIoEGDuHr16gM9tryy1xjcuHGDcePG8eyzzxIYGEiHDh3Ys2ePbf1//vMfnn76aQICAmx/unTp8sCPLy/sNQY5OTkEBARQs2bNXMd57do14NH9HNjr+H97zAEBAdSoUQN/f3/WrVsH5J/PwE2bNm2iSZMmf1huxnOBvY6/oJwHbrrVGJj1PAD2GwMznwv+wJBH3iuvvGK8/fbbxrVr14yEhAQjPDzcmDt37h/anTp1yvjrX/9q/Pvf/zYyMzON9evXG9WrVzfOnTtnGIZhxMbGGg0bNjSOHz9uZGRkGBMmTDDCw8ONnJwcwzAMY8iQIUbXrl2NtLQ048KFC8Yrr7xijBw58qEe65+x1xiMHTvWiIiIMJKTk42srCxj+fLlRo0aNYykpCTDMAxj8eLFxiuvvPJQjy2v7DUGx44dM6pVq2bcuHHjlv08qp8Dex3/773zzjtG9+7djczMTMMw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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.barh(X.columns.tolist(),height=0.5,width=forest.feature_importances_,align=\"center\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.87042249 0.12957751]\n",
      " [0.957535   0.042465  ]\n",
      " [0.9548853  0.0451147 ]\n",
      " ...\n",
      " [0.91902328 0.08097672]\n",
      " [0.96209947 0.03790053]\n",
      " [0.91587013 0.08412987]]\n",
      "Accuracy on training set: 0.939\n",
      "Accuracy on test set: 0.938\n"
     ]
    }
   ],
   "source": [
    "#梯度提升回归树\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "gbrt = GradientBoostingClassifier(random_state=0) \n",
    "gbrt.fit(X_train, y_train)\n",
    "Predict_proba = gbrt.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "print(\"Accuracy on training set: {:.3f}\".format(gbrt.score(X_train, y_train)))\n",
    "print(\"Accuracy on test set: {:.3f}\".format(gbrt.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 10 artists>"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnMAAAGbCAYAAACvTxZ8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABKgUlEQVR4nO3deVxV5d7//xebUSwSCUUcOjlEP+uYCIo4pIBDhmbiVBpHU0srh7RSjxo5ax5NjUJLjbQ0p6icrZxNRE09lR41TUNAwQGNreJmWL8/utvfKFNQdLfg/Xw8ejz2Xte11vVZl+u+7/e9rrU2ToZhGIiIiIiIKVkcXYCIiIiI3DyFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETU5gTERERMTGFORERERETc3F0AXJn/PLLFfLy8h1dhoiIiBSCs7MFL68yheqrMFdK5OXlk5urMCciIlLSaJlVRERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMRcHF2A3Bme2ZkYNpujyyhWhkdZrBZPR5chIiLiUApzpUTmpGHkHDvs6DKKlW/cUvBUmBMRkdJNy6wiIiIiJqYwJyIiImJipSrMXb16ldOnTxfb8U6cOFFsxxIRERG5GcUW5tasWUNoaChBQUFs2rSpuA57S/bs2UNgYKD9e7du3dixY0exHHvhwoW8/vrr9u+RkZGsWLGiWI4tIiIiUljF9gLEsmXLiIyMZNSoUcV1yFsWHBzMvn377N8zMzOL7djnz58v8H316tXFdmwRERGRwiqWO3OdOnVi586dLF68mBYtWrBx40aeeuopQkNDeeSRR3jmmWc4ceIE+fn5hIeHs2TJEvu+eXl5NG3alLVr1wLw9ddfExUVRb169WjdujUffvgh+fn5AAwfPpzhw4cXGDsgIICkpCQAwsPDiYmJoXHjxjz55JMkJiYSEBAAQK9evUhLS+ONN95g7NixABw4cIDo6Gjq169Pq1at+PDDDzEM44bn+9lnn/Hee++xZ88egoOD7WMnJCQAEB0dzdtvv83TTz9N3bp1eeKJJ/juu+945ZVXqFevHuHh4WzevNl+vOvVkZ6eTp8+fWjQoAGPPvoo/fv3JyMjo8j/RiIiIlIyFUuYW758OcHBwfTt25ePP/6YQYMG8fzzz5OYmMjmzZsxDIN3330Xi8VCx44d+eyzz+z7bt++HZvNRkREBDt37uTll1+mT58+7Nq1i7feeov4+HgWLFhQ6Fq+++471q5dy4IFC7BY/t/pffDBB/j7+zNmzBhiYmJIT0+nR48ePPbYY+zYsYO4uDgWLVpUIGj+lQ4dOtC3b1+Cg4PZs2fPNfssWbKEcePGsWvXLry8vOjWrRtt2rQhKSmJ1q1bM27cOIAb1vHWW2/h5+fHN998w5o1a7h8+TLvv/9+oedDRERESrZifwGifPnyrF69mvDwcKxWK6dPn8bb25v09HTg17t43333HcnJycCvd7nat2+Pm5sbCQkJRERE8Pjjj+Pi4sJDDz3E888/z+LFiws9fuvWrfHy8sLLy+u6/VasWEGNGjXo3r07rq6u1KxZk969e7Nw4cKbP/k/1FGzZk3c3NwIDg6mevXqtGjRAldXVx599FFSU1MLVYe7uzvffvstq1ev5tKlS8ydO/dvtZQtIiIijlXsPxrs6urKqlWrWLx4MU5OTjzwwANYrVZcXH4dqmLFijRt2pTPP/+cnj17snHjRj799FMAzp07x//3//1/BY5XpUoVe/ApjAoVKhSqX2pqKgcOHLAvkwLk5+fj7Oxc6LGup1y5cvbPzs7O3HPPPfbvFovFvox6ozpGjRrFe++9x7x58xg+fDgPPvggo0aNKtBfRERESq9iD3Nr167l448/5pNPPuG+++4DYNy4cRw5csTep3PnzkyZMoUKFSrw4IMPUqtWLQAqV65sv2P3m5MnT+Lr6wv8GoKuXr1qb/vjSwgATk5OharTz8+PkJAQ5s2bZ9+WmZnJpUuXCnmm11dcdRw8eJCuXbsyYMAAzp8/z7vvvkv//v3ZuXNnsdQpIiIi5lbsy6xZWVlYLBY8PDwwDIOtW7fy+eefk5OTY+/TvHlz+7NfnTt3tm/v2LEjGzduZO3ateTl5XHw4EHmzJlDx44dAahRowZ79uwhPT2d7Oxs3n333UKHJgA3NzeysrIAaNeuHfv372fFihXk5uaSkZFBv379mDx5cqGO5e7ujtVqLdQLE9dzozpmz57NuHHjsFqteHl5UaZMGby9vW9pTBERESk5ij3MdejQgUaNGhEZGUnDhg2ZNWsWPXr04Pjx49j+7w+9u7i4EBUVRWZmJm3atLHv+8gjjzBz5kzmzJlDcHAw/fv35+mnn6Zfv34AdO3alcDAQJ544glatmxJpUqV8Pf3L3RtnTp1Yvr06bz66qtUrlyZuXPnsmTJEho1akT79u2pXr16ocNcWFgYFy5cICgoiF9++aUIM1TQjeoYO3Ys+fn5REREUL9+ff773/8yc+bMmx5PREREShYn41ZvLYkpnB7YnZxjhx1dRrHyjVtKlqevo8sQEREpdi4uFry9yxaqb6n6c14iIiIiJU2xvwBREkyYMIHly5f/ZXvfvn3tS78iIiIijqRl1lJCy6wiIiLmUZRlVoW5UuLqqRSM/3sBpaQwPMpitXg6ugwREZFiV5Qwp2XWUuKyhze5LvmOLkNERESKmV6AEBERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE3NxdAFyZ3hmZ2LYbI4uQ0SkWBgeZbFaPB1dhsjfgsJcKZE5aRg5xw47ugwRkWLhG7cUPBXmREDLrCIiIiKmpjAnIiIiYmIKc7cgIyODy5cvO7oMERERKcX+9mEuKSmJgIAAR5fxJ2fPnqV169acP38egNmzZ9OnTx8HVyUiIiKljV6AuEnZ2dkF7sr169fPgdWIiIhIaXXTd+ZSUlIICAjgo48+onHjxgQFBfHaa69htVqJjY0lOjq6QP/w8HASEhIAiI6OZvjw4YSFhdG8eXOsVisHDhwgOjqawMBAmjRpwsyZMzEMw77/vHnzaNmyJXXr1mXgwIFYrVYAbDYbb775Jm3atCEwMJDQ0FDGjRtn33f37t1ERUURHBxMy5YtmTBhArm5uQBYrVbGjh1Ls2bNCA0NZfDgwZw9e/aG556Xl0fbtm0BaNu2LWvWrClwzgkJCXTr1o0333yTBg0a0LBhQz766COWLl1KWFgYQUFBxMTE2I93ozpiY2Np1qwZDRo0oGPHjmzYsKHI/14iIiJSMt3yMuuXX37JypUrWbduHT///DNjxowp1H47duxg8eLFrFixgtzcXHr16kVISAhJSUksWrSIhIQElixZYu+fmprKqlWrWL9+Pfv372fhwoUAzJ8/n23btjF//nz27dtHXFwcixcvZufOnQAMHTqU6Oho9uzZQ3x8POvWrbOHoREjRvDzzz+TkJDA119/zV133UX//v0LhMhrcXZ2ZtWqVQCsWrWKxx9//E99vv32WypWrMjOnTsZOHAgkyZNIikpiTVr1vDhhx+yfPlydu/efcM6du7cyZIlS1i2bBlJSUl07tyZkSNHkpOTU6h5FhERkZLtlpdZ//3vf1O+fHkABg4cyAsvvEDPnj1vuN+jjz5KxYoVAfjss89wd3fnpZdewsnJiWrVqhEfH4+npyc///wzAAMGDMDd3Z2KFStSv359kpOTAejSpQsdOnTAx8eHjIwMsrOzKVu2LOnp6QC4u7uzdu1aypUrR/369dmyZQsWi4Vz586xfv161q5di4+PD/BrqAoODubAgQM8/PDDtzQvnp6e9OjRAycnJ5o0aUJeXh69e/emTJky/POf/6RChQqkpqZSvXr169bh7u7OxYsX7Xf1OnfuTNeuXXFycrql+kRERKRkuOUwd99999k/V6pUCZvNxsWLF2+4X4UKFeyfz5w5Q6VKlQoElOrVqwPYw5y3t7e9zdXVlby8PACuXLnC2LFj2b17N35+ftSuXRvDMMjPzwd+vXMXGxvLmDFjOHPmDE2bNmX06NFkZGQAv4bB33N2diYlJeWWw1y5cuXs52Ox/HoD1MvLy95usVjIz88nNTX1unU89thjxMbG8tFHHzF37lw8PDyIjo7mhRdesB9XRERESq9bDnPp6en24JWSkkKZMmWoWLEiR44csffJz8/nwoULBfb7fXDz8/Pj1KlTGIZh3/71119jtVqpVKnSdccfNWoU99xzD9u3b8fd3Z38/Hzq168PwNWrVzl69CijR4/GxcWF48ePM2rUKCZOnMjIkSMBWLt2Lb6+vvbjHT16lKpVq978hFzj/K7nt7uTf1VHWloaPj4+zJs3D5vNRmJiIv379+ehhx6iefPmt1yniIiImNst39qZNm0aVquV9PR03n77bdq3b0+NGjU4fPgwP/74I7m5ucydO/e6v8fWvHlzcnNzmT17NjabjeTkZCZOnMjVq1dvOL7VasXd3R2LxYLVamXKlClYrVZycnJwcnJiyJAhfPDBB+Tm5uLr64uLiwve3t5UrFiR5s2bM2HCBDIzM8nJyWHWrFl06tSJX3755Ybjuru728e/FTeq4/vvv6dPnz4cOnQINzc3+1Ls7+9UioiISOl1y2GuWrVqtG3blieeeILAwEBGjBhBixYtaNeuHT179qRp06ZkZmYSFBT0l8fw8vJi3rx5JCYm0qRJE6Kjo3nqqafo2rXrDccfNWoUhw4dokGDBjz22GNYrVaaNm3KkSNHcHNzY9asWWzYsIGQkBDCw8Px9fXl1VdfBWDKlCl4eXnx5JNP0rBhQ7Zs2cLcuXML3CH7K/feey8tW7aka9eufPLJJ4WfsGu4Xh2tW7emV69evPDCC9StW5dBgwYxYsQIHnnkkVsaU0REREoGJ+NGr27+hZSUFCIiItiwYQNVqlQp7rqkmJ0e2J2cY4cdXYaISLHwjVtKlueN/x9vEbNycbHg7V22UH31BL2IiIiIiekvQFzDd999R48ePf6y3d/fn9WrV9/BikRERESu7abDXJUqVTh8uGQu29WpU4d9+/Y5ugwRERGRG7rpZ+bEXK6eSsGw2RxdhohIsTA8ymK1eDq6DJHbpijPzGmZtZS47OFNrku+o8sQERGRYqYXIERERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMzMXRBcid4ZmdiWGz/WW74VEWq8XzDlYkIiIixUFhrpTInDSMnGOH/7LdN24peCrMiYiImI2WWUVERERMTGFORERExMQU5v6mfv75Z0eXICIiIiZw28NcUlISAQEBt3uYa5o9ezZ9+vRxyNi34s0332TWrFmOLkNERERMoES/ANGvXz9Hl3BTMjMzHV2CiIiImESx3pmLjY2lWbNmNGjQgI4dO7JhwwZ727x582jZsiV169Zl4MCBWK1We9uyZcuIjIykXr16tGvXjhUrVtjboqOjmTx5MlFRUdStW5eoqCj27NkDQEpKCgEBAXz00Uc0btyYoKAgXnvtNfuxY2NjiY6OBiAhIYGnn36a8ePH07BhQ0JDQxk5ciQ5OTkA5OXlMWPGDBo3bkyjRo144403eOqpp0hISCjUuR84cIDo6GgCAwNp0qQJM2fOxDAMAJYvX05UVBQhISEEBgbSt29fzp8/b6+xV69edOzYkQYNGvDOO++wcuVKVq5cyRNPPAHAokWLaNGiBcHBwbRr145ly5bd1L+PiIiIlDzFFuZ27tzJkiVLWLZsGUlJSXTu3JmRI0eSm5sLQGpqKqtWrWL9+vXs37+fhQsXAr+GrMmTJzNq1Ch2797NiBEjGDNmDF999ZX92EuWLGHo0KHs2rWLli1b8sILLxS4e/Xll1+ycuVK1q1bx88//8yYMWOuWePevXvx8fFh27ZtvPfee6xZs4Yvv/wS+DVsrlixgvnz57N582a8vLzYt29foc79woUL9OrVi5CQEJKSkli0aBEJCQksWbKE7777jvHjxzN69GiSkpJYu3YtJ06cYMGCBfb9ExMTefXVV9m0aRP9+vWjXbt29lB78uRJJk2axPvvv8+ePXsYOnQo48aNIyMjo2j/QCIiIlIiFVuYc3d35+LFiyxdupSDBw/SuXNnEhMTcXH5dSV3wIABuLu7U7FiRerXr09ycjIAn376KV27diU0NBRnZ2dCQ0Pp2rUrixcvth+7Y8eONGzYEDc3N/r160eZMmXYtGmTvf3f//435cuXx9fXl4EDB7Ju3Tps1/iBXA8PD/r164erqyt16tQhICCA48ePA7/ePXv++eepWbMmbm5uvPzyy/j6+hbq3Ddt2oS7uzsvvfQSbm5uVKtWjfj4eJo3b84DDzzAqlWrqFOnDhcvXiQjI4Py5cuTnp5u379q1aqEhoZStmxZ+3z9xtnZGcMwWLx4Md9++y2hoaHs37+fChUqFPJfRkREREqyYgtzgYGBxMbGsm/fPrp3707jxo2Ji4sjPz8fAG9vb3tfV1dX8vLyADh79ixVq1YtcKwqVaqQmppq//6Pf/zD/tnJyQk/Pz/OnDlj33bffffZP1eqVAmbzcaFCxf+VKOPjw9OTk4F6vhtKfTUqVNUrlzZ3ubs7Iy/v3+hzv3MmTNUqlSpwLGrV6+On58fFouFBQsWEBoaSlRUFLNnz8ZqtdrHBa4bzPz9/fnoo49ITU2lX79+NGjQgIkTJ3L16tVC1SYiIiIlW7G9AJGWloaPjw/z5s3DZrORmJhI//79iY2Nve5+VapUsd+l+83JkycL3BX7/V2s/Px80tLSqFSpUoH26tWrA78+R1emTJkC4bEw/P39SUtLs383DINTp04Val8/Pz9OnTqFYRj2QPf1119jtVrJyMjgm2++YeXKldx7773An1/M+H0I/KNz586Rl5fHu+++S35+Pnv37mXgwIHcf//9dO/evUjnKCIiIiVPsd2Z+/777+nTpw+HDh3Czc0NHx8fAI4cOXLd/Tp16sSSJUtITEwkLy/P/uxdx44d7X2WLVvGDz/8gM1m491338UwDMLCwuzt06ZNw2q1kp6ezttvv0379u1xdXUtUv1du3blgw8+4Pjx4/ZxCvtcWvPmzcnNzWX27NnYbDaSk5Ptd8+sVisuLi64urqSm5vLF198wbZt2+wvXlyLm5sbWVlZwK8huVevXiQmJmKxWKhYsSJAkcOqiIiIlEzFdmeudevWnDhxwv5ygo+PDyNGjLDfMfsrbdq0wWq1Mn78eNLS0qhYsSJDhw7lySeftPdp0KABY8eO5ejRo9SuXZsPPviAu+++m4sXLwJQrVo12rZty5UrV2jXrh2vvfZakevv0aMHZ86c4amnnsLZ2ZnHH38cPz+/QoVCLy8v5s2bx6RJk4iPj6dMmTJ0796drl27cuHCBY4cOUJYWBju7u7Url2bbt26sXPnzr883uOPP87gwYNp3rw5mzdvJiYmhtGjR5ORkcHdd99Nt27daNOmTZHPUUREREoeJ+P3D2/9DUVHR9OgQQMGDBjwp7aUlBQiIiLYsGEDVapUuaVx/vvf/1K5cmX7UqhhGDRs2JC33nqLxo0b39Kx/w5OD+xOzrHDf9nuG7eULM/CvfAhIiIit5eLiwVv77KF6qs/5/V/Vq5cydChQ8nKyiI3N5f4+HgA6tat69jCRERERK6jRP8FiKJ4+eWXGTt2LC1btsRms/HQQw8xb948ypYtS0hIyDV/6uQ3q1evLvSbryIiIiLF6W+/zCrFQ8usIiIi5lGUZVaFuVLi6qkUjOvcXTQ8ymK1eN7BikREROSvFCXMaZm1lLjs4U2uS76jyxAREZFiphcgRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExFwcXYDcGZ7ZmRg2m6PL+FszPMpitXg6ugwREZEiUZgrJTInDSPn2GFHl/G35hu3FDwV5kRExFy0zCoiIiJiYgpzIiIiIiamMCciIiJiYgpzxSwpKYmAgAAA0tLSCAwMJC0t7br7pKSkEBAQQEpKyp0oUUREREoQvQBxG/n7+7Nv3z5HlyEiIiIlmOnvzB0+fJjnnnuOBg0a8OijjzJ69GiysrJISEjg6aefZvz48TRs2JDQ0FBGjhxJTk4OAIZhsGDBAlq3bk1wcDDdunXjhx9+KPS4Bw4cIDo6msDAQJo0acLMmTMxDKNAnz/ecTt58iT9+vUjKCiI0NBQRo8eje0aPxfyzjvv0LRpU44ePUpubi6jR4+mcePGhISE0K1bN7799ttbmDEREREpSUwd5jIzM/nXv/5FzZo12bp1K59++inHjx9n6NChAOzduxcfHx+2bdvGe++9x5o1a/jyyy8BWLRoEfHx8cycOZPExESioqJ49tlnOXv27A3HvXDhAr169SIkJISkpCQWLVpEQkICS5Ys+ct9cnNz6d27N76+vmzdupVVq1axf/9+YmNjC/SbOXMmn332GYsWLaJmzZp88cUX7Nu3j7Vr17Jjxw7q16/PmDFjbmHWREREpCQxdZjbsGEDrq6uvPrqq3h4eODr68vrr7/Oxo0bOXv2LB4eHvTr1w9XV1fq1KlDQEAAx48fB2DhwoX07duXBx98EFdXVzp16kSNGjVYsWLFDcfdtGkT7u7uvPTSS7i5uVGtWjXi4+Np3rz5X+6zd+9eUlNTGTFiBGXLlsXHx4d33nmHzp072/vMnDmTuXPn8vHHH1O1alUAPDw8SElJYfny5Rw/fpxBgwYVqkYREREpHUwd5s6dO4e/vz/Ozs72bVWqVLF/9vHxwcnJyf7d1dXVvhSamprKm2++SXBwsP2/Q4cO3fBlBYAzZ85QqVKlAseuXr06fn5+193H29ubMmXKFKi1WrVq9u8//vgj5cqVY+XKlfZtkZGRvP7662zYsIEnn3ySsLAwPvnkkxvWKCIiIqWDqV+AqFy5MmlpaeTl5dkDXXJyMsA1n0X7PT8/PwYOHEhkZKR9W3JyMuXKlbvhuH5+fpw6dQrDMOyB7uuvv8ZqtVKpUqW/3CczM5MrV67YA92ePXv44YcfaNGiBQDTp0/nxIkTDBw4kGbNmtnvJD700EM8+eSTZGdns27dOoYNG0ZwcDC1atW6Ya0iIiJSspn6zlyzZs0AmDp1KtnZ2Zw5c4YJEybQsGFD/P39r7tvly5dmDVrFseOHQNg27ZtREZGsnv37huO27x5c3Jzc5k9ezY2m43k5GQmTpzI1atX/3KfOnXq8I9//IM333yTK1eucPbsWSZNmsT58+ftfVxdXQkLC+Pxxx9n6NCh2Gw2Nm3aRP/+/UlJScHDw4Ny5crh4uLC3XffXZgpEhERkRLO1Hfm7r77buLj45k8ebI92EVERDB06FA2btx43X179uyJYRi8+OKLZGRkULFiRWJiYoiIiLjhuF5eXsybN49JkyYRHx9PmTJl6N69O127diUpKema+7i6ujJ79mwmTpxI8+bNcXFxoV27dgwcOJDTp08X6Dty5EgiIyOJjY1l0KBBpKen89RTT2G1WqlcuTLTp0+/7pKuiIiIlB5Oxh9/T0NKpNMDu5Nz7LCjy/hb841bSpanr6PLEBERwcXFgrd32UL1NfUyq4iIiEhpZ+pl1tslJCTkui9QrF69+obP5ImIiIjcCVpmLSWunkrBuMEbvqWd4VEWq8XT0WWIiIgUaZlVd+ZKicse3uS65Du6DBERESlmemZORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMzMXRBcid4ZmdiWGzOboMcTDDoyxWi6ejyxARkWKkMFdKZE4aRs6xw44uQxzMN24peCrMiYiUJFpmFRERETExhTkRERERE1OYExERETExh4W5lJQUAgICSElJcVQJt11AQABJSUmOLkNERERKMN2ZExERETExh4e5zz//nBYtWtCoUSNGjRqF1WolISGBqKgoevXqRXBwMCtXriQ7O5spU6bQrFkz6tevT3R0NN999x0AAwcOZMKECfZjDh8+nMaNG2MYBgCbNm0iLCwMgEWLFtGiRQuCg4Np164dy5Yts++XnJxMv379CAkJISwsjOnTp2Mr5M955OTkMGnSJEJCQmjYsCFz584t0H7s2DH69u1L8+bNqVOnDo8//jibNm0CICYmhl69ehXoP3bsWIYOHQpAbGwszZo1o0GDBnTs2JENGzYUZYpFRESkBHN4mNuzZw9Lly5lxYoVHDlyhIkTJwJw4MAB2rVrx44dO2jZsiWjR49m+/btLFiwgG+++YYWLVrQs2dP0tLSaNGiBVu3brUfc/v27VitVg4f/vWnODZu3EiLFi04efIkkyZN4v3332fPnj0MHTqUcePGkZGRweXLl+nZsye1atVi69atLFq0iB07dhAbG1uo84iLi2Pz5s0sX76cjRs3cuTIkQLtAwYM4IEHHuCrr75iz549NGnShNGjRwPQqVMnEhMTSU9PB8Bms7F69WqioqLYuXMnS5YsYdmyZSQlJdG5c2dGjhxJTk7OrU69iIiIlAAOD3PDhw+nfPny3HvvvQwcOJCVK1eSn5+Pq6sr7du3x83NDScnJ1atWsUrr7zCfffdh5ubGz169KB69eqsWrWK5s2bk5qaysmTJzl06BAeHh40btyYxMREDMNg06ZNtGrVCmdnZwzDYPHixXz77beEhoayf/9+KlSowObNm7HZbAwZMgR3d3cqVarEoEGDWLhwYaHO44svvqB3795UrVoVT09PRo0ahZOTk739vffeY8CAARiGQWpqKl5eXvbwVqdOHWrUqMGqVasA2Lx5M3fddRchISG4u7tz8eJFli5dysGDB+ncuTOJiYm4uroW/z+GiIiImI7DfzS4SpUq9s+VKlXCZrNx4cIFfH19sVh+zZoXL14kJyenQN/f9k1JScHLy4sGDRqwdetWLl++TKNGjahRowbbt2+nXr16GIZBUFAQFouFjz76iLlz59KvXz/y8vKIioritddeIzU1lfPnz1O/fn378Q3DICcnh3PnzuHj43Pd88jIyKBSpUr2715eXtxzzz3274cOHeLFF1/kzJkz1KhRg/Lly9uXgQGioqL4/PPP6d27NwkJCXTo0AEnJycCAwOJjY211+3h4UF0dDQvvPCCfX5ERESk9HJ4mEtPT+euu+4Cfn3D1dPTk/Llyxe4q3Xvvffi7u7OyZMnqVGjhn17cnIy4eHhAERERLB161ZycnJ46qmnqFGjBjNmzGD9+vVERERgsVg4d+4ceXl5vPvuu+Tn57N3714GDhzI/fffj5+fH9WqVWPdunX241utVs6dO0f58uVveB5+fn6cPHnS/v3y5ctkZWXZz3HQoEG888479nrXr1/Pl19+ae/fvn173nrrLfbt28c333xDTEwMAGlpafj4+DBv3jxsNhuJiYn079+fhx56iObNmxd1ukVERKSEcfitnf/85z9cvHiR06dPM3PmTLp27fqnPhaLhY4dO/LWW2/x888/Y7PZmD9/PkePHiUyMhKAFi1asGvXLvbv30/Dhg2pUaMG5cqVY9GiRbRs2RL4NRj16tWLxMRELBYLFStWBMDb25uwsDAuXbrE3Llzsdls/PLLLwwbNozBgwcXCJZ/pXPnzsydO5djx45x9epVJk+eTF5eHgCXLl0iLy+PMmXKAHD06FHeffddAPsLFj4+PjRr1oyxY8cSHByMv78/AN9//z19+vTh0KFDuLm52e8Qent73/Sci4iISMnh8DtzgYGBPPbYY1gsFtq2bcvgwYNZvXr1n/oNHTqU2NhYevbsyYULFwgICGDevHncf//9AFSsWJFatWphsVjw8vICoHHjxqxfv56GDRsC8M9//pOYmBhGjx5NRkYGd999N926daNNmzY4OTnx4YcfMnnyZObOnUt+fj4hISHMmjWrUOfx3HPPceXKFZ555hlyc3Pp0qUL5cqVA6B69eoMHTqU1157jStXruDn50eXLl34z3/+w5EjR3j44YeBX5daX3zxRaZNm2Y/buvWrTlx4gQvvPACmZmZ+Pj4MGLECB555JGbnnMREREpOZyM3z+4JQ516NAhoqOj2b59O+7u7sV67NMDu5Nz7HCxHlPMxzduKVmevo4uQ0REbsDFxYK3d9nC9b3NtUghWK1W0tLSmDFjBlFRUcUe5ERERKTkUpgrhPj4eN5+++2/bG/Xrh1jx4696eOfPn2arl278uCDD/Liiy/e9HFERESk9NEyaymhZVYBLbOKiJhFUZZZFeZKiaunUjAK+afJpOQyPMpitXg6ugwREbkBPTMnf3LZw5tcl3xHlyEiIiLFzOG/MyciIiIiN09hTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETMzF0QXIneGZnYlhszm6DBERMTHDoyxWi6ejy5A/UJgrJTInDSPn2GFHlyEiIibmG7cUPBXm/m60zCoiIiJiYgpzIiIiIiZWqsPciRMnHF2CiIiIyC0ptWHu4MGDtG3b1mHj9+nTh9mzZztsfBERESkZSu0LEFlZWeTk5Dhs/Llz5zpsbBERESk5SsSduQMHDhAdHU1gYCBNmjRh5syZGIbB8uXLiYqKIiQk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IjdUlDCnZdZS4rKHN7kuN//jxyIiIvL3pBcgRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmRERERExMYU5ERETExBTmREREREzMxdEFyJ3hmZ2JYbPdsJ/hURarxfMOVCQiIiLFQWGulMicNIycY4dv2M83bil4KsyJiIiYhZZZRURERExMYU5ERETExBTmRERERExMYc6BkpKSCAgIcHQZIiIiYmIKcyIiIiImpjB3DQcPHuTpp58mMDCQ9u3bM2vWLMLDwwHYsWMHnTp1Ijg4mMjISFasWGHfb/jw4cTExNCvXz8CAwOJiIhgwYIF9vaMjAz69etHvXr1iIiI4JtvvikwbnJyMv369SMkJISwsDCmT5+O7f9+TiQhIYGoqCh69epFcHAwK1euvAMzISIiIn93CnN/YLVa6dOnDw0bNiQpKYkpU6awdOlSAA4dOsQLL7zA888/T1JSEuPGjWPixIls27bNvn9CQgLR0dHs3r2b5557jsmTJ5Oeng7A4MGDcXFxYevWrXz88cds3brVvt/ly5fp2bMntWrVYuvWrSxatIgdO3YQGxtr73PgwAHatWvHjh07aNmy5R2aEREREfk7U5j7g40bN+Ls7MyAAQNwc3MjICCAPn36ALB48WIiIiJo1aoVzs7O1KtXjy5durBw4UL7/iEhITRu3BgXFxc6duxIXl4eycnJpKamsmfPHl599VXuuusuKlWqRP/+/e37bd68GZvNxpAhQ3B3d6dSpUoMGjSowLFdXV1p3749bm5ueHh43LlJERERkb8t/WjwH5w+fRp/f38slv+Xc6tWrQpAamoqO3fuJDg42N6Wl5dHtWrV7N99fX3tn11dXQHIz8+3353z9/e3t/9+v9TUVM6fP0/9+vXt2wzDICcnh3PnztmP/fu6RERERBTm/sDf35+0tDQMw8DJyQmAtLQ0APz8/OjQoQNjx46198/IyMAwjBse18/PD4CTJ09So0YN4Nfg+Pv2atWqsW7dOvs2q9XKuXPnKF++PIC9HhEREZHf6DbPH4SHh2MYBrNnz8Zms/HTTz8xb948ADp16sSqVavYvn07+fn5nDhxgmeeeYYPPvjghsf19/enSZMmTJo0iYsXL3LmzBneeecde3tYWBiXLl1i7ty52Gw2fvnlF4YNG8bgwYMV4kREROQvKcz9gaenJ3FxcWzYsIEGDRowZMgQGjdujKurK4888ghvvfUWb731FvXr1+eZZ54hPDycV155pVDHnjZtGnfffTdhYWF07NiRRo0a2dvuuusuPvzwQ5KSknj00Udp0aIFFouFWbNm3a5TFRERkRLAySjMGmEpkpmZyU8//URQUJB920cffcTq1atZvHixAyu7NacHdifn2OEb9vONW0qWp+8N+4mIiMjt4+Jiwdu7bKH66s7cH+Tl5dGjRw+2bNkCQEpKCosWLSIsLMzBlYmIiIj8mV6A+IN7772XGTNmMHXqVF5++WW8vLzo0KEDvXv3dnRpIiIiIn+iMHcNLVq0oEWLFo4uQ0REROSG9MxcKXH1VArG//1psOsxPMpitXjegYpERETkrxTlmTndmSslLnt4k+uS7+gyREREpJjpBQgRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExhTkRERERE1OYExERETExF0cXIHeGZ3Ymhs3m0BoMj7JYLZ4OrUFERKSkUZgrJTInDSPn2GGH1uAbtxQ8FeZERESKk5ZZRURERExMYU5ERETExBTmRERERExMYU5ERETExEwb5jZu3MhTTz1FaGgojzzyCM888wwnTpwAYPXq1bRu3Zrg4GB69+7N66+/zvDhwwEwDIMFCxbY27t168YPP/xQqDFTUlIICAhg8uTJ1K9fnzFjxmCz2XjzzTdp06YNgYGBhIaGMm7cOAzDACA6Oppp06bRvXt3AgMDadOmDWvWrClwzN69e1OvXj0ee+wxPvzwQwICAuztBw4cIDo6mvr169OqVSs+/PBD+7FFRERETBnmTp8+zaBBg3j++edJTExk8+bNGIbBu+++y759+xg2bBjDhg1j586dPPXUUyQkJNj3XbRoEfHx8cycOZPExESioqJ49tlnOXv2bKHHv3TpEt988w2DBw9m/vz5bNu2jfnz57Nv3z7i4uJYvHgxO3futPdfunQpI0eOJCkpiVatWhETE8PVq1fJy8ujb9++VKhQge3btzNv3jw+//xz+37p6en06NGDxx57jB07dhAXF8eiRYtYsmRJscyjiIiImJ8pw1z58uVZvXo14eHhWK1WTp8+jbe3N+np6Xz66ae0atWK8PBwXFxcaNmyJS1atLDvu3DhQvr27cuDDz6Iq6srnTp1okaNGqxYsaLQ4z/55JO4ubnh5eVFly5d+PDDD/H19SUjI4Ps7GzKli1Lenq6vX/r1q2pXbs2bm5udOjQgaysLM6dO8f+/fs5ceIEr7/+Op6enlSuXJnBgwfb91uxYgU1atSge/fuuLq6UrNmTXr37s3ChQuLZyJFRETE9Ez5O3Ourq6sWrWKxYsX4+TkxAMPPIDVasXFxYVTp05Ru3btAv2rVq1qv/OWmprKm2++ydSpU+3tubm5PPzww4Uev0KFCvbPV65cYezYsezevRs/Pz9q166NYRjk5+fb+/j6+to/u7j8OuX5+fn2EOr5u99eq1Kliv1zamoqBw4cIDg42L4tPz8fZ2fnQtcqIiIiJZspw9zatWv5+OOP+eSTT7jvvvsAGDduHEeOHKFy5cqkpaUV6J+WloabmxsAfn5+DBw4kMjISHt7cnIy5cqVK/T4Tk5O9s+jRo3innvuYfv27bi7u5Ofn0/9+vULdRx/f3/Onz/PlStXKFOmjL3W3/j5+RESEsK8efPs2zIzM7l06VKhaxUREZGSzZTLrFlZWVgsFjw8PDAMg61bt/L555+Tk5ND586d+eqrr9i2bRt5eXls2bKFL7/80r5vly5dmDVrFseOHQNg27ZtREZGsnv37puqxWq14u7ujsViwWq1MmXKFKxWKzk5OTfc95FHHqFmzZpMnjyZK1eukJ6ezttvv21vb9euHfv372fFihXk5uaSkZFBv379mDx58k3VKiIiIiWPKe/MdejQgW+//ZbIyEicnZ2pXr06PXr0YOHChQQEBDBmzBhGjx5NZmYmwcHBhIaG4urqCkDPnj0xDIMXX3yRjIwMKlasSExMDBERETdVy6hRo4iJiaFBgwaULVuW5s2b07RpU44cOXLDfS0WC2+//TZvvPEGoaGh+Pn5ER4ezv/+9z8AKleuzNy5c5k6dSrjx4/H2dmZ5s2bM3LkyJuqVUREREoeJ6OE/c7F8ePHyc/Pp0aNGvZtAwYMoHr16gVeLvg7yM7OZt++fTRo0MD+HNzGjRt544032LZtW7GOdXpg97/F32bN8vS9cUcREZFSzsXFgrd32UL1NeUy6/UcPXqUHj16kJycDEBSUhLbtm2jWbNmDq7sz1xdXXn55ZdZunQp+fn5nDt3jg8++ICwsDBHlyYiIiImYcpl1utp2bIlR48e5V//+hcXL16kcuXKjBs3jnr16t1w35CQEGw221+2r169Gn9//2Kr1dnZmXfffZcpU6YwdepU3N3dad26Na+99lqxjSEiIiIlW4lbZpVr0zKriIiIeRRlmVVhrpS4eioF4zp3He8Ew6MsVovnjTuKiIiUckUJcyVumVWu7bKHN7ku+TfuKCIiIqZS4l6AEBERESlNFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETExhTkRERMTEFOZERERETMzF0QXIneHsrNwuIiJiFkX5v9tOhmEYt7EWEREREbmNdLtGRERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kRERERMTGFORERExMQU5kzo3LlzvPjiiwQHBxMSEsKECRPIzc29Zt8tW7bQrl076tatS5s2bdi0aVOB9jlz5vDoo49St25doqOj+emnn+7EKThEcc1bfn4+gYGB1K1bl8DAQPt/ly9fvlOncscVZe5+s379eiIiIv60Xddc0eettF1zRZm3Tz75hNatWxMYGEjr1q1ZuHBhgXZdb0WfN11v1563/Px8YmNjadasGYGBgbRr1441a9YU6OOw680Q03nmmWeMV155xbh8+bKRnJxsREZGGnPmzPlTv+PHjxv//Oc/ja+++srIyckxVq9ebdSpU8c4ffq0YRiGkZCQYDRt2tQ4cuSIkZ2dbUyaNMmIjIw08vPz7/Qp3RHFNW+HDx82HnroIePq1at3+hQcprBzZxiGYbPZjPfff9+oXbu2ERYWVqBN19zNzVtpu+YKO29fffWVERwcbOzbt8/Iz8839u7dawQHBxvr1q0zDEPX283Om663a8/bggULjPDwcOPnn382DMMwNm7caDz44IP274683hTmTObEiRPGAw88YA8WhmEYq1evNpo3b/6nvm+99Zbx7LPPFtjWu3dvY+bMmYZhGMZTTz1lzJo1y95ms9mMwMBAIzEx8TZV7zjFOW/Lly83oqKibm/BfyNFmTvD+PV/Mfbu3duYPn36n0KJrrmbm7fSdM0VZd4+/vhj47333iuw7aWXXjLGjRtnGIaut5udN11v1563vLw849KlS4ZhGMbVq1eN5cuXG4GBgUZ6erphGI693rTMajI//vgj5cqVo2LFivZtNWrUIC0tjV9++aVA36NHj/LAAw8U2FazZk0OHTp0zXZXV1f+8Y9/2NtLkuKct++//56rV6/SsWNHGjZsSPfu3dm7d+/tPwkHKcrcAfznP/9h7ty5VKtW7U9tuuZubt5K0zVXlHnr3r07zz//vP37uXPn2L17Nw8//DCg6+1m503X27XnzWKx4Onpyfbt23nkkUcYOXIkgwYNokKFCoBjrzeFOZO5dOkSZcqUKbDtt+9/fJ7hWn09PDzs/W7UXpIU57x5eHhQp04d4uLi2Lx5M+Hh4fTu3ZuTJ0/exjNwnKLMHYCfn1+RjqVr7lfXm7fSdM0Vdd5+c+bMGZ577jkefvhh2rZt+5fH0vVW0LXmTdfb9eetQYMGfP/998THxzNjxgz7c3OOvN4U5kzG09OTK1euFNj22/eyZcsW2F6mTBmys7MLbMvOzrb3u1F7SVKc8zZ8+HAmTpxIxYoV8fDwoHfv3vj7+7Nly5bbeAaOU5S5uxFdczc3b6XpmruZedu/fz+dOnXi/vvvZ9asWbi4uAC63m523nS9XX/e3NzccHFxITQ0lPbt27Ny5UrAsdebwpzJ1KpViwsXLnD27Fn7tmPHjuHn58fdd99doO8DDzzAjz/+WGDb0aNHqVWrlv1Yv2/PycnhxIkTf1piLAmKc96mT5/OwYMHC7TbbDbc3d1vU/WOVZS5K8yxdM0Vfd5K0zVX1Hlbvnw5PXv2pEePHkybNg03N7cCx9L1VvR50/V27XmbPHkykydPLrDNZrNRrlw5+7Ecdb0pzJnMP/7xD4KCgpg4cSJWq5WTJ08SFxdHp06d/tT3iSeeYNeuXaxZs4bc3FzWrFnDrl27aN++PQAdO3bk448/5tChQ1y9epVp06Zx7733EhwcfKdP67Yrznk7cuQIEyZM4MyZM9hsNt555x2sVistW7a806d1RxRl7m5E19zNzVtpuuaKMm/r169n9OjRxMbG0qtXrz+163q7uXnT9XbteQsODmbx4sXs3r2b/Px8Nm7cyJo1a+jcuTPg4Ovttr9iIcXuzJkzxoABA4wGDRoYDRs2NCZPnmzk5uYahmEYdevWNb744gt7361btxpPPPGEUbduXSMyMtLYvHmzvS0/P9+YN2+eER4ebtStW9eIjo42fvrppzt+PndKcc1bZmamMXz4cCM0NNQ+b//73//u+PncSUWZu998+umnf3orU9fczc1babvmCjtvbdu2NR588EGjbt26Bf57/fXXDcPQ9Xaz86br7a//53TZsmVGq1atjHr16hlRUVHG1q1b7W2OvN6cDMMwbn9kFBEREZHbQcusIiIiIiamMCciIiJiYgpzIiIiIiamMCciIiJiYgpzIiIiIiamMCciIiJiYgpzIiIiIiamMCciIiJiYgpzIiIiIiamMCciIiJiYgpzIiIiIiamMCciIiJiYv8/4g/VPzJSpB0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.barh(X.columns.tolist(),height=0.5,width=gbrt.feature_importances_,align=\"center\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.80465239 0.19534761]\n",
      " [0.95121398 0.04878602]\n",
      " [0.94746655 0.05253345]\n",
      " ...\n",
      " [0.93167188 0.06832812]\n",
      " [0.95607862 0.04392138]\n",
      " [0.90428177 0.09571823]]\n",
      "0.9382820166830226\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\Feb\\anaconda3\\envs\\pytorch\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:546: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "  self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n"
     ]
    }
   ],
   "source": [
    "#多层感知机\n",
    "from sklearn.neural_network import MLPClassifier\n",
    "mlp = MLPClassifier(solver='lbfgs', activation='relu',alpha=0.1,random_state=0,hidden_layer_sizes=[10,10]).fit(X_train, y_train)\n",
    "Predict = mlp.predict(X_test)\n",
    "Predict_proba = mlp.predict_proba(X_test)\n",
    "print(Predict_proba[:])\n",
    "Score = accuracy_score(y_test, Predict)\n",
    "print(Score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x20d9faaa040>"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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ZcCAAYSEhBAdHf1E+djYWM6cOUOpUqVSXadaPEVERERswYqz2qOiojAa/37slpubG25uTz5NMCYmhmvXriV6qejoaB4+fEixYsXM+woXLkxMTAznz5/n//7v/xKUP3XqFHFxccyaNYsjR46QIUMGWrRoQefOnXFySl5bphJPERERkTSmffv2nDx50vy6V69eBAUFPVHuxx9/5O233070Gn369AHAy8vLvM/T0xMg0XGe9+7do0KFCgQGBjJ9+nR++eUXevbsiZOTE507d05W3Eo8RURERGzAYAKD8dnlnnUNgGXLlj3R4pmYgIAATp8+neixkydPMnPmTKKjo0mXLh2AuYs9ffr0T5SvXLkylStXNr8uXbo0HTp0YPPmzclOPDXGU0RERMQWTFbaeNRKmT59evOWVOL5NAULFsTV1ZWzZ8+a9507dw5XV1defvnlJ8p/9913rFixIsG+2NhYPDw8kl2nEs//iD/++MPeIYiIiIgD8fT0pH79+kydOpVbt25x69Ytpk6dyhtvvJFoMmkymZg4cSKhoaGYTCaOHj3K0qVLadOmTbLrTHOJZ1hYGD4+Pnape8GCBcluSnYkkydPZv78+fYOQ0RE5D/N0hnt1njW+7+NHDmSl19+mUaNGvH666+TN29eRowYYT7esGFDFixYAECdOnUYMmQIo0aNwtfXlw8++ICgoCCaNGmS7Po0xjMFunXrZu8QUuX27dv2DkFERESssQC8lReQT58+PWPHjmXs2LGJHt+0aVOC123btqVt27aprs+hWzxnz55NtWrVqFChAi1atGD79u3mY8HBwdSpU4eyZcvSu3dvIiMjzcdWr15Nw4YNKVeuHI0aNWL9+vXmY4GBgUyaNInmzZtTtmxZmjdvzuHDhwG4dOkSPj4+fP7551SuXBk/Pz8++OAD87Vnz55NYGAgACEhIbz55puMGzeOihUrUqlSJYYNG8bDhw8BiI+PZ8aMGVSuXJlXX32VkSNH0rZtW0JCQpL13k+cOEFgYCC+vr5UqVKFmTNnYvrrm23NmjU0b96cgIAAfH196dq1K7du3TLH+M4779CiRQsqVKjAnDlz2LBhAxs2bKBx48YALF++nNq1a+Pv70+jRo1YvXp1qj4fERERkZRw2MTzwIEDrFy5ktWrVxMWFkarVq0YNmwYcXFxAFy+fJmNGzeydetWjh07xrJl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i632HkTEvpR4irwgunfvzscff4zBYGDixIm89957fP7557z22mt8/fXXCSZ2BAUFMWrUKA4ePEi3bt2YM2cOr7/+OsuXL09yjF+LFi3MSW2XLl344YcfzImRLbz22mtMnTqVX3/9lV69etG/f388PT1ZunSpebLS81S9enXg0SzuxwICAszH/jnBqUqVKgQHB3P16lV69+7NwIEDcXZ2ZvHixUnONG/UqBFjxowhNDSUbt26sWnTJvPDALy8vFIUa7du3fj555/p0qWLVVuDCxQowLRp07h27Rrdu3dnxIgRAHz++ecYDAYOHz4MQN26dXnllVcYPHhwsh/duXv3br766it69epl7lqvVq0a9evXZ+bMmUkudyUiaYvBZM0/h0VEJFU2btxIiRIlKFSokHnfrl276Nq1K19//TXFixe3Y3QiItahxFNExAG89957nDt3jr59+5IrVy7Onz/PrFmzKFCgAJ9//rm9wxMRsQolniIiDuD27dtMmzaNPXv2cOvWLbJly0a9evXo3bs36dKls3d4IiJWocRTRERERGxCk4tERERExCaUeIqIiIiITSjxFBERERGbUOIpIiIiIjahxFNEREREbEKJp4iIiIjYhBJPEREREbEJJZ4iIiIiYhNKPEVERETEJv4f8/MMXVh5EyUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 2000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20, 5))\n",
    "plt.imshow(mlp.coefs_[0], interpolation='none', cmap='viridis')\n",
    "plt.yticks(range(10), X.columns.tolist()) \n",
    "plt.xlabel(\"Columns in weight matrix\") \n",
    "plt.ylabel(\"Input feature\") \n",
    "plt.colorbar()\n",
    "# 显示了连接输入和第一个隐层之间的权重。图中的行对应 10个输入特征，列对应 10个隐单元。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StandardScaler()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">StandardScaler</label><div class=\"sk-toggleable__content\"><pre>StandardScaler()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "StandardScaler()"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 原始数据预处理之缩放\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "\n",
    "X_train = X_train[X_train.columns.tolist()].astype(float)\n",
    "X_test = X_test[X_test.columns.tolist()].astype(float)\n",
    "\n",
    "scaler.fit(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9349392787046124\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\Feb\\anaconda3\\envs\\pytorch\\lib\\site-packages\\sklearn\\base.py:458: UserWarning: X has feature names, but MLPClassifier was fitted without feature names\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "# 变换数据\n",
    "X_train_scaled = scaler.transform(X_train)\n",
    "X_test_scaled = scaler.transform(X_test)\n",
    "\n",
    "mlp1 = MLPClassifier(solver='lbfgs', random_state=0,hidden_layer_sizes=[10]).fit(X_train_scaled, y_train)\n",
    "Predict = mlp1.predict(X_test)\n",
    "Score = accuracy_score(y_test, Predict)\n",
    "print(Score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob\n",
       "0   163968         4605   NaN\n",
       "1   360576         1581   NaN\n",
       "2    98688         1964   NaN\n",
       "3    98688         3645   NaN\n",
       "4   295296         3361   NaN"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#实践预测\n",
    "df_test.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "特征构建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  \n",
       "0                0  \n",
       "1                0  \n",
       "2                0  \n",
       "3                0  \n",
       "4                2  \n",
       "5                1  \n",
       "6                0  \n",
       "7                0  \n",
       "8                0  \n",
       "9                0  "
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test = pd.merge(df_test,user_info,on=\"user_id\",how=\"left\")\n",
    "\n",
    "df_test = pd.merge(df_test,total_logs_temp,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "\n",
    "df_test = pd.merge(df_test,unique_item_ids_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "\n",
    "df_test = pd.merge(df_test,categories_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "\n",
    "df_test = pd.merge(df_test,browse_days_temp1,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "\n",
    "df_test = pd.merge(df_test,four_features,on=[\"user_id\",\"merchant_id\"],how=\"left\")\n",
    "\n",
    "# 缺失值向后填充\n",
    "df_test = df_test.fillna(method='bfill')\n",
    "df_test = df_test.fillna(method='ffill')\n",
    "\n",
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "user_id                 0\n",
       "merchant_id             0\n",
       "prob               261477\n",
       "age_range               0\n",
       "gender                  0\n",
       "total_logs              0\n",
       "unique_item_ids         0\n",
       "categories              0\n",
       "browse_days             0\n",
       "one_clicks              0\n",
       "shopping_carts          0\n",
       "purchase_times          0\n",
       "favourite_times         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.isnull().sum(axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age_range  gender  total_logs  unique_item_ids  categories  browse_days  \\\n",
       "0        2.0     0.0           2                1           1            1   \n",
       "1        2.0     0.0          10                9           4            1   \n",
       "2        6.0     0.0           6                1           1            1   \n",
       "3        6.0     0.0          11                1           1            1   \n",
       "4        2.0     1.0          50                8           4            5   \n",
       "5        2.0     0.0          11                2           1            4   \n",
       "6        5.0     1.0          13                6           1            1   \n",
       "7        3.0     1.0           2                1           1            1   \n",
       "8        3.0     1.0           3                2           1            1   \n",
       "9        3.0     1.0           7                4           3            1   \n",
       "\n",
       "   one_clicks  shopping_carts  purchase_times  favourite_times  \n",
       "0           1               0               1                0  \n",
       "1           5               0               5                0  \n",
       "2           5               0               1                0  \n",
       "3          10               0               1                0  \n",
       "4          47               0               1                2  \n",
       "5           9               0               1                1  \n",
       "6          11               0               2                0  \n",
       "7           1               0               1                0  \n",
       "8           2               0               1                0  \n",
       "9           6               0               1                0  "
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X1 = df_test.drop(['user_id','merchant_id','prob'],axis = 1)\n",
    "\n",
    "X1.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "逻辑斯特模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.95432253, 0.04567747],\n",
       "       [0.87877089, 0.12122911],\n",
       "       [0.94574286, 0.05425714],\n",
       "       [0.94679764, 0.05320236],\n",
       "       [0.94156806, 0.05843194],\n",
       "       [0.94633777, 0.05366223],\n",
       "       [0.94157468, 0.05842532],\n",
       "       [0.95643224, 0.04356776],\n",
       "       [0.95611028, 0.04388972],\n",
       "       [0.94948946, 0.05051054]])"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba = Logit.predict_proba(X1)\n",
    "\n",
    "df_test[\"Logit_prob\"] = Predict_proba[:,1]\n",
    "\n",
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045677</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053662</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058425</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043568</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050511</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  \n",
       "0                0    0.045677  \n",
       "1                0    0.121229  \n",
       "2                0    0.054257  \n",
       "3                0    0.053202  \n",
       "4                2    0.058432  \n",
       "5                1    0.053662  \n",
       "6                0    0.058425  \n",
       "7                0    0.043568  \n",
       "8                0    0.043890  \n",
       "9                0    0.050511  "
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "决策树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.95837129, 0.04162871],\n",
       "       [0.89760368, 0.10239632],\n",
       "       [0.95837129, 0.04162871],\n",
       "       [0.95837129, 0.04162871],\n",
       "       [0.93145807, 0.06854193],\n",
       "       [0.95232015, 0.04767985],\n",
       "       [0.91089364, 0.08910636],\n",
       "       [0.95837129, 0.04162871],\n",
       "       [0.95232015, 0.04767985],\n",
       "       [0.93145807, 0.06854193]])"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba = tree.predict_proba(X1)\n",
    "\n",
    "df_test[\"Tree_prob\"] = Predict_proba[:,1]\n",
    "\n",
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045677</td>\n",
       "      <td>0.041629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121229</td>\n",
       "      <td>0.102396</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058432</td>\n",
       "      <td>0.068542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053662</td>\n",
       "      <td>0.047680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058425</td>\n",
       "      <td>0.089106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043568</td>\n",
       "      <td>0.041629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043890</td>\n",
       "      <td>0.047680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050511</td>\n",
       "      <td>0.068542</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  \n",
       "0                0    0.045677   0.041629  \n",
       "1                0    0.121229   0.102396  \n",
       "2                0    0.054257   0.041629  \n",
       "3                0    0.053202   0.041629  \n",
       "4                2    0.058432   0.068542  \n",
       "5                1    0.053662   0.047680  \n",
       "6                0    0.058425   0.089106  \n",
       "7                0    0.043568   0.041629  \n",
       "8                0    0.043890   0.047680  \n",
       "9                0    0.050511   0.068542  "
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机森林"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.96719674, 0.03280326],\n",
       "       [1.        , 0.        ],\n",
       "       [0.98963009, 0.01036991],\n",
       "       [1.        , 0.        ],\n",
       "       [0.9       , 0.1       ],\n",
       "       [1.        , 0.        ],\n",
       "       [1.        , 0.        ],\n",
       "       [0.96004151, 0.03995849],\n",
       "       [0.95346438, 0.04653562],\n",
       "       [1.        , 0.        ]])"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba = forest.predict_proba(X1)\n",
    "\n",
    "df_test[\"Forest_prob\"] = Predict_proba[:,1]\n",
    "\n",
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045677</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121229</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.010370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058432</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053662</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058425</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043568</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.039958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043890</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050511</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Forest_prob  \n",
       "0                0    0.045677   0.041629     0.032803  \n",
       "1                0    0.121229   0.102396     0.000000  \n",
       "2                0    0.054257   0.041629     0.010370  \n",
       "3                0    0.053202   0.041629     0.000000  \n",
       "4                2    0.058432   0.068542     0.100000  \n",
       "5                1    0.053662   0.047680     0.000000  \n",
       "6                0    0.058425   0.089106     0.000000  \n",
       "7                0    0.043568   0.041629     0.039958  \n",
       "8                0    0.043890   0.047680     0.046536  \n",
       "9                0    0.050511   0.068542     0.000000  "
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "梯度提升回归树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.96338469, 0.03661531],\n",
       "       [0.89053731, 0.10946269],\n",
       "       [0.95615727, 0.04384273],\n",
       "       [0.95615727, 0.04384273],\n",
       "       [0.92325522, 0.07674478],\n",
       "       [0.95456509, 0.04543491],\n",
       "       [0.92597124, 0.07402876],\n",
       "       [0.96209947, 0.03790053],\n",
       "       [0.95641878, 0.04358122],\n",
       "       [0.94607038, 0.05392962]])"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba = gbrt.predict_proba(X1)\n",
    "\n",
    "df_test[\"Gbrt_prob\"] = Predict_proba[:,1]\n",
    "\n",
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "      <th>Gbrt_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045677</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032803</td>\n",
       "      <td>0.036615</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121229</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.109463</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.010370</td>\n",
       "      <td>0.043843</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.043843</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058432</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.076745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053662</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.045435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058425</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.074029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043568</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.039958</td>\n",
       "      <td>0.037901</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043890</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046536</td>\n",
       "      <td>0.043581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050511</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.053930</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Forest_prob  Gbrt_prob  \n",
       "0                0    0.045677   0.041629     0.032803   0.036615  \n",
       "1                0    0.121229   0.102396     0.000000   0.109463  \n",
       "2                0    0.054257   0.041629     0.010370   0.043843  \n",
       "3                0    0.053202   0.041629     0.000000   0.043843  \n",
       "4                2    0.058432   0.068542     0.100000   0.076745  \n",
       "5                1    0.053662   0.047680     0.000000   0.045435  \n",
       "6                0    0.058425   0.089106     0.000000   0.074029  \n",
       "7                0    0.043568   0.041629     0.039958   0.037901  \n",
       "8                0    0.043890   0.047680     0.046536   0.043581  \n",
       "9                0    0.050511   0.068542     0.000000   0.053930  "
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "多层感知机"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.95857924, 0.04142076],\n",
       "       [0.89244114, 0.10755886],\n",
       "       [0.94861612, 0.05138388],\n",
       "       [0.94904772, 0.05095228],\n",
       "       [0.93370843, 0.06629157],\n",
       "       [0.95270881, 0.04729119],\n",
       "       [0.92823536, 0.07176464],\n",
       "       [0.95366321, 0.04633679],\n",
       "       [0.95359115, 0.04640885],\n",
       "       [0.94245209, 0.05754791]])"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Predict_proba = mlp.predict_proba(X1)\n",
    "\n",
    "df_test[\"mlp_prob\"] = Predict_proba[:,1]\n",
    "\n",
    "Predict_proba[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>merchant_id</th>\n",
       "      <th>prob</th>\n",
       "      <th>age_range</th>\n",
       "      <th>gender</th>\n",
       "      <th>total_logs</th>\n",
       "      <th>unique_item_ids</th>\n",
       "      <th>categories</th>\n",
       "      <th>browse_days</th>\n",
       "      <th>one_clicks</th>\n",
       "      <th>shopping_carts</th>\n",
       "      <th>purchase_times</th>\n",
       "      <th>favourite_times</th>\n",
       "      <th>Logit_prob</th>\n",
       "      <th>Tree_prob</th>\n",
       "      <th>Forest_prob</th>\n",
       "      <th>Gbrt_prob</th>\n",
       "      <th>mlp_prob</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>163968</td>\n",
       "      <td>4605</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.045677</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.032803</td>\n",
       "      <td>0.036615</td>\n",
       "      <td>0.041421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360576</td>\n",
       "      <td>1581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.121229</td>\n",
       "      <td>0.102396</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.109463</td>\n",
       "      <td>0.107559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>98688</td>\n",
       "      <td>1964</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.054257</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.010370</td>\n",
       "      <td>0.043843</td>\n",
       "      <td>0.051384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>98688</td>\n",
       "      <td>3645</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.053202</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.043843</td>\n",
       "      <td>0.050952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>295296</td>\n",
       "      <td>3361</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>50</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.058432</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.100000</td>\n",
       "      <td>0.076745</td>\n",
       "      <td>0.066292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>33408</td>\n",
       "      <td>98</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.053662</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.045435</td>\n",
       "      <td>0.047291</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>230016</td>\n",
       "      <td>1742</td>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0.058425</td>\n",
       "      <td>0.089106</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.074029</td>\n",
       "      <td>0.071765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>164736</td>\n",
       "      <td>598</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043568</td>\n",
       "      <td>0.041629</td>\n",
       "      <td>0.039958</td>\n",
       "      <td>0.037901</td>\n",
       "      <td>0.046337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>164736</td>\n",
       "      <td>1963</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.043890</td>\n",
       "      <td>0.047680</td>\n",
       "      <td>0.046536</td>\n",
       "      <td>0.043581</td>\n",
       "      <td>0.046409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>164736</td>\n",
       "      <td>2634</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.050511</td>\n",
       "      <td>0.068542</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.053930</td>\n",
       "      <td>0.057548</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id  merchant_id  prob  age_range  gender  total_logs  unique_item_ids  \\\n",
       "0   163968         4605   NaN        2.0     0.0           2                1   \n",
       "1   360576         1581   NaN        2.0     0.0          10                9   \n",
       "2    98688         1964   NaN        6.0     0.0           6                1   \n",
       "3    98688         3645   NaN        6.0     0.0          11                1   \n",
       "4   295296         3361   NaN        2.0     1.0          50                8   \n",
       "5    33408           98   NaN        2.0     0.0          11                2   \n",
       "6   230016         1742   NaN        5.0     1.0          13                6   \n",
       "7   164736          598   NaN        3.0     1.0           2                1   \n",
       "8   164736         1963   NaN        3.0     1.0           3                2   \n",
       "9   164736         2634   NaN        3.0     1.0           7                4   \n",
       "\n",
       "   categories  browse_days  one_clicks  shopping_carts  purchase_times  \\\n",
       "0           1            1           1               0               1   \n",
       "1           4            1           5               0               5   \n",
       "2           1            1           5               0               1   \n",
       "3           1            1          10               0               1   \n",
       "4           4            5          47               0               1   \n",
       "5           1            4           9               0               1   \n",
       "6           1            1          11               0               2   \n",
       "7           1            1           1               0               1   \n",
       "8           1            1           2               0               1   \n",
       "9           3            1           6               0               1   \n",
       "\n",
       "   favourite_times  Logit_prob  Tree_prob  Forest_prob  Gbrt_prob  mlp_prob  \n",
       "0                0    0.045677   0.041629     0.032803   0.036615  0.041421  \n",
       "1                0    0.121229   0.102396     0.000000   0.109463  0.107559  \n",
       "2                0    0.054257   0.041629     0.010370   0.043843  0.051384  \n",
       "3                0    0.053202   0.041629     0.000000   0.043843  0.050952  \n",
       "4                2    0.058432   0.068542     0.100000   0.076745  0.066292  \n",
       "5                1    0.053662   0.047680     0.000000   0.045435  0.047291  \n",
       "6                0    0.058425   0.089106     0.000000   0.074029  0.071765  \n",
       "7                0    0.043568   0.041629     0.039958   0.037901  0.046337  \n",
       "8                0    0.043890   0.047680     0.046536   0.043581  0.046409  \n",
       "9                0    0.050511   0.068542     0.000000   0.053930  0.057548  "
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果保存"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Feb\\AppData\\Local\\Temp\\ipykernel_12920\\2906741455.py:3: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  res.rename(columns={\"mlp_prob\":\"prob\"},inplace=True)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   user_id  merchant_id      prob\n",
      "0   163968         4605  0.041421\n",
      "1   360576         1581  0.107559\n",
      "2    98688         1964  0.051384\n",
      "3    98688         3645  0.050952\n",
      "4   295296         3361  0.066292\n",
      "5    33408           98  0.047291\n",
      "6   230016         1742  0.071765\n",
      "7   164736          598  0.046337\n",
      "8   164736         1963  0.046409\n",
      "9   164736         2634  0.057548\n"
     ]
    }
   ],
   "source": [
    "choose = [\"user_id\",\"merchant_id\",\"mlp_prob\"]\n",
    "res = df_test[choose]\n",
    "res.rename(columns={\"mlp_prob\":\"prob\"},inplace=True)\n",
    "print(res.head(10))\n",
    "res.to_csv(path_or_buf = './prediction.csv',index = False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
